尝试从文件中读取所有行,但只读取一行

时间:2016-06-16 17:08:08

标签: java android file arraylist writing

我正在尝试从几个文件中读取所有行,并将这些行放在ArrayList中。 尽管有多行,但每个文件只读一行并添加到ArrayList

这是写入2个文件的代码:

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();
}

以下是从2个文件中读取并将行放入ArrayList s(numberCorrectSetnumberDateSet的代码String { {1}} S):

ArrayList

我用Google搜索并搜索了Stack Overflow的类似问题,但没有发现类似情况。

4 个答案:

答案 0 :(得分:0)

我不确定你要写什么。根据您的代码,只有引用'date'的内容将被写入输出文件 为了编写数组列表的内容。你需要为每个人使用。

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

如果您认为我的答案无关紧要,请再解释一下。

和陈述。 wr.flush()和wr.close()应该在finally块

之下

答案 1 :(得分:0)

尝试进行这些更改:

    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();

答案 2 :(得分:0)

试试这个Java 7代码:

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

或:

Files.readAllLines(...)

答案 3 :(得分:0)

尝试更改

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

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

wr.append(date);

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

每个文件。

编辑:按要求说明。 第一个更改是确保Writer附加到文件。方法名称append有点欺骗,它只是意味着你附加在这个会话中写的内容。要附加到文件,您必须在创建FileOutputStream时指定您想要的内容。第二个是确保每个日期都在新行上,而不是

datedatedate

将它们写为

date
date
date