Frage

Dies ist ein Codeausschnitt, aber im Grunde möchte ich aus einer Datei mit dem Namen 'listings' lesen.txt' und schreibe in eine Datei mit dem Namen 'Übersicht.txt'.Ich möchte die Informationen aus den Auflistungen entfernen.txt' und lege sie in die 'Übersicht.txt 'wie es ist (den Rest werde ich später herausfinden).

Die Datei 'Übersicht.txt'wird erstellt und scheint die Dateilisten zu durchlaufen.txt' und schreibe in 'Übersicht.txt'.Sobald ich jedoch die Datei 'Übersicht' öffne.txt' es ist leer.
Könnte jemand einen kurzen Blick auf meinen Code werfen und etwas Fehlerhaftes entdecken?

package yesOverview;

import java.io.BufferedReader;
import java.io.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;


public class yesOverview {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String strInput = "foo.bar";
        System.out.print("Please enter the listings file (the full path to the file): ");
        strInput = input.next();

        //This makes sure that the inputed file is listings.txt as required for KET1 task 2
        while (strInput.contains("listings.txt") == false) {
            System.out.print("Incorrect file. Please enter listings file(the full path to the file): ");
            strInput = input.next();
        }

        infos(strInput);
        input.close();
    }

    public static void infos(String strInput) {
        Scanner input2 = new Scanner(System.in);
        System.out.print("Please enter the overview.txt file (the full path to the file): ");
        String strInput2 = "foo.bar";
        strInput2 = input2.next();

        //This also makes sure that the overview.txt file is provided. 
        while (strInput2.contains("overview.txt") == false) {
            System.out.print("Incorrect file. Please enter overview file(the full path to the file): ");
            strInput2 = input2.next();
        }

        //Creates the file f then places it in the specified directory.
        File f = new File(strInput2);

        try {
            //Creates a printerwriter out that writes to the output file. 
            PrintWriter out = new PrintWriter(strInput2);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(KETTask2Overview.class.getName()).log(Level.SEVERE, null, ex);
        }

        //String that holds the value of the next line. 
        String inputLine = "";

        //Creates the Buffered file reader / writer.  
        try {
            BufferedReader in = new BufferedReader(new FileReader(strInput));
            FileWriter fstream = new FileWriter(strInput2);
            BufferedWriter out = new BufferedWriter(fstream);
            while (in.readLine() != null) {
                out.write(in.read());
            }
            in.close();
        } catch (IOException e) {
            System.err.println("Error: " + e.getMessage());
        }

    }
}
War es hilfreich?

Lösung

Versuchen Sie dies

Schließen Sie den BufferedWriter-Stream (dh out.schließen() )

versuchen Sie, nextLine() anstelle von next() zu verwenden, da next() nur ein einzelnes Wort aufnimmt, aber für eine vollständige Zeile nextLine() , obwohl dies hier nicht das Problem zu sein scheint.

Was ich mache, wenn ich Dateien lesen und schreiben muss, folge ich normalerweise diesen Schritten

Zum Lesen aus einer Datei

File f = new File("my.txt");
FileReader fr = new FileReader(f);
BufferedReader br  = new BufferedReader(fr);

String s = null;

while ((br.readLine())!=null) {

// Do whatever u want to do with the content of the file,eg print it on console using SysOut...etc

}

br.close();

Zum Schreiben in eine Datei:

Boolean isDone = true;
Scanner scan = new Scanner(System.in);
File f = new File("my.txt");
FileWriter fr = new FileWriter(f);
BufferedWriter br  = new BufferedWriter(fr);

while (isDone) {

   if (!isDone) {

 br.write(new Scanner(System.in).nextLine());

 }


}

Andere Tipps

public static long copy (Reader input, Writer output) throws IOException {

    char[] buffer = new char[8192];
    long count = 0;
    int n;
    while ((n = input.read( buffer )) != -1) {
        output.write( buffer, 0, n );
        count += n;
    }
    return count;
}

Anwendungsbeispiele:

 copy( reader, new FileWriter( file ) );

Du machst nicht dicht.Der finally-Block für die writeList-Methode bereinigt und schließt dann den BufferedWriter.

finally {
    if (out != null) { 
        System.out.println("Closing BufferedWriter");
        out.close(); 
    } else { 
        System.out.println("BufferedWriter not open");
    } 
} 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top