2016-03-26 17 views
0

Das ist mein Code, ich kann es nicht richtig funktionieren, es bekommt nur die letzte Zeile aus 3 Zeilen insgesamt aus der ersten Textdatei und kapitalisieren nur das, und ich kann nicht herauszufinden, warumJAVA - Lesen von einer Datei und Schreiben in eine andere

import java.util.Scanner; 
    import java.io.*; 


    public class AllCapitals { 
    public static void main(String[] args) { 
     String readLine; 

     String inFilePath = "/home/file.txt"; 
     String outFilePath = "/home/newFile.txt"; 


     try (BufferedReader bufferedReader = new BufferedReader(new FileReader(inFilePath))) { 

     while ((readLine = bufferedReader.readLine()) != null) { 
      readLine.toUpperCase(); 
      String upperC = readLine.toUpperCase(); 

      System.out.println(upperC); 

      try (Writer writer = new BufferedWriter(new OutputStreamWriter(
        new FileOutputStream(outFilePath), "utf-8"))) { 
        writer.write(upperC); 
       } 
      } 
     } catch (IOException e) { 
      System.out.println("Error."); 
      e.printStackTrace(); 
     } 
    } 
} 

EDIT: Passwort functionallity zu sagen.

Ich brauche 3 Zeilen von einer normalen Textdatei zu lesen, wie die

Hello. 
    How are you ? 
    Good, thank you ! 

Und der Ausgang geht, soll in allen CAPS sein, aber ich habe nur die letzte Zeile „GUT DANKE“

Antwort

2

Das liegt daran, dass Sie die Ausgabedatei in jeder Iteration neu erstellen, während Sie die ersten Zeilen lesen. Erstellen einmal die Ausgabedatei, bevor Sie anfangen zu lesen, zum Beispiel:

try (BufferedReader bufferedReader = new BufferedReader(new FileReader(inFilePath)); 
     Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFilePath), "utf-8")) 
    ) { 
     while ((readLine = bufferedReader.readLine()) != null) { 
      String upperC = readLine.toUpperCase(); 
      System.out.println(upperC); 

      writer.write(upperC); 
      writer.write(System.lineSeparator()); 
     } 
    } catch (IOException e) { 
     System.out.println("Error."); 
     e.printStackTrace(); 
    } 

Einige andere Verbesserungen:

  • entfernt, um eine sinnlose Linie readLine.toUpperCase();, die nichts tat
  • hinzufügen Zeilenumbrüche für jede Zeile, sonst der gesamte Inhalt wäre in der gleichen Zeile
Verwandte Themen