我正在尝试从几个文件中读取所有行,并将这些行放在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(numberCorrectSet
和numberDateSet
的代码String
{ {1}} S):
ArrayList
我用Google搜索并搜索了Stack Overflow的类似问题,但没有发现类似情况。
答案 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