Android won't write new line in text file

12,184

Solution 1

I executed a similar program and it worked for me. I observed a strange behavior though. It added those new lines to the file, however the cursor remained at the first line. If you want to verify, write a String after your newline characters, you will see that the String is written just below those new lines.

Solution 2

I had the same problems, tried every trick in the book.

My problem: the newline's were written, but while reading they were removed:

while (readString != null) {
                datax.append(readString);
                readString = buffreader.readLine();
            }

The file was read line by line and concatenated, so the newline's disappeared.

I did not look at the original file in Notepad or something because I didn't know where to look on my phone, and my logscreen used the code which removed the newline's :-(

So the simple soultion was to put it back while reading:

while (readString != null) {
                datax.append(readString);
                datax.append("\n");
                readString = buffreader.readLine();
            }
Share:
12,184
NikolajSvendsen
Author by

NikolajSvendsen

Updated on July 22, 2022

Comments

  • NikolajSvendsen
    NikolajSvendsen almost 2 years

    I am trying to write a new line to a text file in android.

    Here is my code:

    FileOutputStream fOut;
    try {
        String newline = "\r\n";
        fOut = openFileOutput("cache.txt", MODE_WORLD_READABLE);
        OutputStreamWriter osw = new OutputStreamWriter(fOut); 
    
        osw.write(data);
        osw.write(newline);
    
        osw.flush();
        osw.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    I have tried \n, \r\n and I did also try to get the system property for a new line, neither of them work.

    The data variable contains previously data from the same file.

    String data = "";
    
    try {
        FileInputStream in = openFileInput("cache.txt");   
        StringBuffer inLine = new StringBuffer();
        InputStreamReader isr = new InputStreamReader(in, "ISO8859-1");
        BufferedReader inRd = new BufferedReader(isr,8 * 1024);
        String text;
    
        while ((text = inRd.readLine()) != null) {
            inLine.append(text);
        }
    
        in.close();
        data = inLine.toString();
    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }