从带有换行符的文本文件中读取数据时,数据丢失

时间:2015-09-27 16:16:49

标签: android android-file

我有三个字符串,用这段代码写入list.txt文件

String filepath = Environment.getExternalStorageDirectory().getPath();
String filename=filepath+"/" + FOLDER +  "/" + "list.txt"   ;   
FileOutputStream fop = null;
File file = null;

try {
    file =new File(filename);
    fop=new FileOutputStream(file,true);
    // if file doesn't exists, then create it
    if (!file.exists()) {
        file.createNewFile();
    }
    filecontent=filecontent+ System.getProperty ("line.separator");
    // get the content in bytes
    byte[] contentInBytes = filecontent.getBytes();

    fop.write(contentInBytes);
    fop.flush();
    fop.close();

} catch (IOException e) {
    e.printStackTrace();
}

文件输出详细信息为

abc.mp3
cde.mp3
edf.mp3

现在,我想阅读list.txt中的详细信息。我使用下面的代码,但输出只有

cde.mp3
edf.mp3

我的代码会怎么样?我不知道为什么数据abc.mp3会消失。

ArrayList<String> data;
try {
        String filepath = Environment.getExternalStorageDirectory().getPath();
        String filename=filepath+"/" + FOLDER +  "/" + "list.txt"   ;
        BufferedReader in = new BufferedReader(new FileReader(filename));
        String audio_name;
        audio_name = in.readLine();
        data = new ArrayList<String>();
        while ((audio_name = in.readLine()) != null) {                  
            data.add(audio_name);
        }
        in.close();
} catch (IOException e) {
            System.out.println("File Read Error");
}
for (int i=0;i<data.size();i++)
    {
      Log.d("D",String.valueOf(data.get(i)));
    }

2 个答案:

答案 0 :(得分:1)

audio_name = in.readLine()的第一个实例将读取第一行abc.mp3,但未使用输入。因此,while循环读取并存储在data中的第一行将为cde.mp3。您应该删除audio_name = in.readLine()的第一个实例。

答案 1 :(得分:1)

audio_name = in.readLine();
data = new ArrayList<String>();

您已将第一行读入audio_name变量,但您从未将其添加到列表中,这就是为什么它缺少&#34;