2016-11-22 3 views
1

Problem: Ich kann meine Datei test.txt nicht durch Leerzeichen analysieren. Ich kann 1) Textdateien lesen, und ich kann 2) Strings analysieren, aber ich kann die beiden nicht verbinden und eine Textdatei analysieren! Ich möchte lernen, wie man Textdateien analysiert. Dies ist ein vereinfachter Ansatz dafür.Kombinieren Sie Lesen und Analysieren text.txt

Fortschritt: Bis jetzt kann ich test.txt mit FileReader und BufferedReader lesen und es auf Konsole drucken. Außerdem kann ich einfache String-Variablen analysieren. Die einzelnen Operationen laufen, aber ich kämpfe mit dem Parsen einer tatsächlichen Textdatei. Ich glaube, das liegt daran, dass meine test.txt im Puffer gespeichert ist, und nachdem ich .close() es, kann ich es nicht drucken.

Textdatei Inhalt: Dies ist eine Textdatei erstellt, nur für Testzwecke.

Code:

import java.io.*; 

public class ReadFile { 

    //create method to split text file, call this from main 
    public void splitIt(String toTest) 
    { 
     String[] result = toTest.split(" "); 

     for (String piece:result) 
     { 
      //loop through the array and print each piece 
      System.out.print(piece); 
     } 
    } 


    public static void main(String[] args) { 

     //create readfile method  
     try 
     { 
      File test = new File("C:\\final\\test.txt"); 
      FileReader fileReader = new FileReader(test); 
      BufferedReader reader = new BufferedReader(fileReader); 

      String line = null; 

      //While there are still lines to be read, read and print them 
      while((line = reader.readLine()) != null) 
      { 
       System.out.println(line); 
       splitIt(line); 
      } 

      reader.close(); 
     } 

     //Catch those errors! 
     catch (Exception ex) 
     { 
      ex.printStackTrace(); 
     } 

//  readFileMethod a = new readFileMethod(line); 
     System.out.println(a.splitIt()); 

    } 

} 

Preemptive danken Ihnen für Ihr Wissen zu teilen. Viele Beiträge zum Lesen und Parsen wurden hier auf SO gelöst, aber ich habe nicht das Verständnis, die Lösungen anderer zu implementieren. Bitte entschuldigen Sie, ich habe erst ein paar Monate Java gelernt und kämpfe immer noch mit den Grundlagen.

+0

Können Sie erklären, was Sie versuchen zu erreichen und den Inhalt der Textdatei auch setzen. – root

+0

Hey root, ich habe den Inhalt der Textdatei hinzugefügt (einfach einen Platzhaltertext) und habe meinen Zweck beschrieben. Ich möchte jedes Wort im Text durch Zeilen getrennt haben. – PizzaAndCode

Antwort

0

Aufbauend auf Scary Wombat und der Code, ich einige Änderungen vorgenommen. Es sollte jetzt die Zeile, die gelesen wird, und jedes Wort, das durch Leerzeichen getrennt ist, ausgeben.

import java.io.*; 

public class ReadFile { 

    //create method to split text file, call this from main 
    public static void splitIt(String toTest) 
    { 
     String[] result = toTest.split(" "); 

     for (String piece:result) 
     { 
      //loop through the array and print each piece 
      System.out.println(piece); 

     } 
    } 


    public static void main(String[] args) { 

     //create readfile method 
     try 
     { 
      File test = new File("C:\\final\\test.txt"); 
      FileReader fileReader = new FileReader(test); 
      BufferedReader reader = new BufferedReader(fileReader); 

      String line = null; 

      //While there are still lines to be read, read and print them 
      while((line = reader.readLine()) != null) 
      { 
       System.out.println(line); // print the current line 
       splitIt(line); 
      } 

      reader.close(); 
     } 

     //Catch those errors! 
     catch (Exception ex) 
     { 
      ex.printStackTrace(); 
     } 

    } 

} 
+0

dies funktionierte einwandfrei. Ich schätze den vollständigen Arbeitscode :) – PizzaAndCode

+1

@ ScaryWombat ähm ... Ich schätze deine Antworten sehr. Warum Root rotieren, um eine vollständige Lösung bereitzustellen? Und bezüglich des sarkastischen Lernkommentars habe ich ein paar hundert Seiten Java gelesen, seit ich diese Frage gepostet habe und mein Verständnis wesentlich verbessert habe. Daher habe ich den Code mehrmals von Grund auf neu geschrieben. Ich weiß nicht, warum du so einen billigen Schuss auf jemanden gemacht hast, der einmal in denselben Schuhen gestanden hat wie du ... aber das macht nichts. Ich schätze dennoch diese Gemeinschaft von Lernenden und Lehrern. – PizzaAndCode

3

Ok lässt die Aufspaltung in eine mthod machen

private static void splitIt (String toTest) { 

    String[] result = toTest.split(" "); 

    for (String piece:result) 
    { 
     //loop through the array and print each piece. 
     System.out.println(piece); 
    } 
} 

dann können Sie es nennen aus

while((line = reader.readLine()) != null) 
    { 
     System.out.println(line); 
     splitIt (line); 
    } 
+0

Hallo Scary Wombat, ich habe * versucht *, deine Antwort in meinen Codeblock einzubauen, aber ich bin immer noch dadurch behindert, dass ich eine nicht-statische aus dem statischen Haupt herausrufe (glaube ich). Ein paar Stunden Arbeit und 30 Seiten Lesen haben zu keiner Lösung geführt, aber es ist offensichtlich, dass dies ein häufiges Anfängerproblem ist :(Hast du irgendwelche Hinweise? – PizzaAndCode

+0

@PizzaAndCode Da 'splitIt' keine statische Methode ist, würde es erfordern die Klasse, in der sie enthalten ist, um zuerst instanziiert zu werden (make ein neues Objekt der Klasse). Sie _können_ ein neues Objekt von 'ReadFile' in main erzeugen und dann die Methode von diesem Objekt selbst aufrufen. Aber es ist wahrscheinlich am einfachsten (und in diesem Fall) Fall machen mehr Sinn) zu machen "splitIt" eine statische Methode. – kunruh

+0

@kunruh Danke für Ihren Kommentar. Ich habe meine Antwort bearbeitet, um diese Methode 'static' –

Verwandte Themen