Jame
Jame

Reputation: 3854

Data missing when read from text file with line breaks in Android

I have three strings which write in to list.txt file with this code

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

The file output detail is

abc.mp3
cde.mp3
edf.mp3

Now, I want to read the detail in list.txt. I used below code but the output only has

cde.mp3
edf.mp3

What is happen with my code? I don't know why data abc.mp3 disappear.

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

Upvotes: 0

Views: 97

Answers (2)

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

You read your first line into your audio_name variable, but you never add it to the list, so that's why it's "missing".

Upvotes: 1

headuck
headuck

Reputation: 2783

The first instance of audio_name = in.readLine() would read the first line abc.mp3 but the input is not used. Thus first line read by your while loop and stored in data would be cde.mp3. You should remove the first instance of audio_name = in.readLine().

Upvotes: 1

Related Questions