Frage

Hier ist der Code-Schnipsel.

read = new FileReader("trainfiles/"+filenames[i]);
                br = new BufferedReader(read);
                while((lines = br.readLine())!=null){
                    st = new StringTokenizer(lines);
                    while(st.hasMoreTokens()){
                        bw = new BufferedWriter(new FileWriter("files/file.txt"));
                        bw.write(st.nextToken());
                        bw.newLine();
                    }
                }

Edit: Ich lese Dateien aus einem Verzeichnis. Also, ich brauche in jeder Schleife um den Leser zu öffnen. Ich habe einige Änderungen vorgenommen, aber dann auch ist sie nicht auf diese Datei zu schreiben. Hier ist der Code:

for(i=0;i==0;i++){
            if(filenames[i].matches(".*ham.*")){
                System.out.println("ham:"+filenames[i]);
                read = new FileReader("trainfiles/"+filenames[i]);
                br = new BufferedReader(read);
                while((lines = br.readLine())!=null){
                    st = new StringTokenizer(lines);
                    while(st.hasMoreTokens()){
                        System.out.println(st.nextToken());
                       bw.write(st.nextToken());
                    }
                }
                bw.close();
                br.close();

            }else{
                System.out.println("spam:"+filenames[i]);
            }
                        }

edit: Ich änderte den Code, aber kein Erfolg,

while((lines = br.readLine())!=null){
                    st = new StringTokenizer(lines);
                    bw = new BufferedWriter(new FileWriter("files/file.txt"));
                    while(st.hasMoreTokens()){
                        System.out.println(st.nextToken());
                       bw.write(st.nextToken());
                    }
                    bw.close();
                }

                br.close();

Und ich bin immer diese Fehlermeldung: Exception in thread "main" java.util.NoSuchElementException at java.util.StringTokenizer.nextToken(StringTokenizer.java:332) at Test.main(Test.java:30)

edit: Danke Jungs .. ich es herausgefunden. Eigentlich habe ich eine Verzeichnis in Eclipse und ich habe aufzufrischen es nicht um den Inhalt zu sehen. Sein dumm ... anyways.thanks viel

War es hilfreich?

Lösung

  • Sie haben die FileWritter innerhalb der Schleife zu schaffen, so dass Sie immer die Datei in jedem Zyklus gestutzt.
  • Sie haben vergessen zu schließen / spülen writter
  • Aber mit etwas Glück (das Programm beendet werden kann den writter bündig verursachen) die Datei das letzte Wort Ihrer Eingabedatei enthalten würde, die ich nur eine neue Linie wäre erraten kann und Sie wahrscheinlich verpaßt, wenn Sie die Datei geöffnet bis zu überprüfen Sie den Inhalt.

Ihre innere Schleife in etwa so sein sollte:

try (BufferedWriter bw = new BufferedWriter(new FileWriter("file.txt"))) {
    while (st.hasMoreTokens()) {
        bw.write(st.nextToken());
        bw.newLine();
    }
}

Andere Tipps

Ein paar Dinge:

  1. Sie einen neuen Filewriter jedes Mal durch die Schleife zu schaffen, die die Datei jedes Mal werden gestutzt.
  2. BufferedWriter wird gepuffert und Sie Spülung nie den Puffer. Sie müssen entweder Anruf bw.flush (), oder noch besser, in der Nähe der Schriftsteller, wenn Sie fertig.

Im Idealfall sollten Sie Constructor folgender FileWriter zu erstellen,

bw = new BufferedWriter(new FileWriter("files/file.txt",true));

Der zweite Parameter, true ist es, die neuen Daten zum Anhängen. FileWriter werden Ihre vorherigen Schreib gestutzt.

und Ihre Leser werden in der Lage sein, geeignete Daten zu lesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top