2016-06-16 30 views
-1

Ich versuche, alle Zeilen aus ein paar Dateien zu lesen und legt diese Zeilen in ArrayList s. Trotz mehrerer Zeilen wird nur eine Zeile aus jeder Datei gelesen und zu einer ArrayList hinzugefügt.Der Versuch, alle Zeilen aus einer Datei zu lesen, aber nur eine Zeile wird gelesen

Hier ist der Code für die 2-Dateien für das Schreiben:

String date = month + "/" + dayOfMonth + "/" + year; 

String datesFileName = "dates_file"; 
String scoresFileName = "scores_file"; 

//this next part, commented out or not, doesn't make a difference in the results 
/*File datesFile=new File(getApplicationContext().getFilesDir(), datesFileName); 
if(!datesFile.exists()){ 
    try{ 
     datesFile.createNewFile(); 
     datesFile.mkdir(); 
     Log.i("ARGH", "created a new file"); 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

File scoresFile=new File(getApplicationContext().getFilesDir(), scoresFileName); 
if(!scoresFile.exists()){ 
    try{ 
     scoresFile.createNewFile(); 
     scoresFile.mkdir(); 
     Log.i("ARGH", "created a new file2"); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
}*/ 

//Here is where the writing takes place 
try { 
    Writer wr = new OutputStreamWriter(getApplicationContext().openFileOutput(datesFileName, MODE_PRIVATE)); 
    wr.append(date); 
    wr.flush(); 
    wr.close(); 
    Writer wr2 = new OutputStreamWriter(getApplicationContext().openFileOutput(scoresFileName, MODE_PRIVATE)); 
    wr2.append(correctlyAnswered + "");//correctlyAnswered is an int 
    wr2.flush(); 
    wr2.close(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Hier ist der Code für die von den 2-Dateien lesen und Platzieren der Zeile (n) in ArrayList s (numberCorrectSet und numberDateSet sind die StringArrayList s) :

Ich googelte und suchte Stack Overflow für ein ähnliches Problem, fand aber keine ähnliche Situation.

Antwort

0

Ich bin mir nicht sicher, was Sie versuchen zu schreiben. Nach Ihrem Code wird nur der Inhalt der Referenz "date" in die Ausgabedatei geschrieben, um den Inhalt der Array-Liste zu schreiben. Sie müssen für jeden verwenden.

for (String text : numberDataSet) { 
    wr.append (text); 
} 

Bitte erklären Sie etwas mehr, wenn Sie meinen, dass meine Antwort nicht relevant ist.

Und Aussagen. wr.flush() und wr.close() sollte kommen schließlich unter

+0

Danke für die Beantwortung, ich versuche, das Datum und die Partitur zu schreiben 2 separate Dateien.Diese Dateien sind "dates_file" und "scores_file". –

+0

Versuchen Sie, den Inhalt der Array-Liste nach dem Lesevorgang mit sysout() zu drucken. Dies wird uns helfen, sicherzustellen, ob alle Zeilen der Datei vom System gelesen –

+0

Nur eine Zeile wurde gedruckt –

0

Versuchen Sie blockieren diese Änderungen vornehmen:

FileReader file = new FileReader("c:/yourFile.txt"); 
    BufferedReader br = new BufferedReader(file); 

    String line = br.readLine(); 
    while (line != null) { 
     numberDateSet.add(line); 
     line = br.readLine(); 
    } 
    file.close(); 
0

Versuchen Sie, diese Java 7-Code:

new String(Files.readAllBytes(...)) 

oder:

Files.readAllLines(...) 
0

Versuchen Sie, die

zu ändern

zu

Writer wr = new OutputStreamWriter(getApplicationContext().openFileOutput(datesFileName, MODE_APPEND)); 

und

wr.append(date); 

zu

wr.append(date + "\n"); 

für jede der Dateien.

Bearbeiten: Erklärung wie angefordert. Die erste Änderung besteht darin, sicherzustellen, dass der Writer sich an die Datei anfügt. Der Methodenname append ist etwas täuschend, es bedeutet einfach, dass Sie an das anhängen, was in dieser Sitzung geschrieben wurde. Um an die Datei anzuhängen, müssen Sie bei der Erstellung von FileOutputStream angeben, welche Datei Sie verwenden möchten. Das zweite ist, um sicherzustellen, dass jedes Datum geht auf eine neue Linie, also eher als

datedatedate 

sie schreiben, wie

date 
date 
date 
+0

Vielen Dank! Können Sie mir bitte erklären, was mit meinem Code nicht in Ordnung war und wie Ihr Problem behoben wurde? –