5

我正在尝试向 android 中的文本文件写入新行。

这是我的代码:

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

我已经尝试过\n\r\n并且我也尝试过获取新行的系统属性,但它们都不起作用。

data 变量包含来自同一文件的先前数据。

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

3 回答 3

3

我有同样的问题,尝试了书中的每一个技巧。

我的问题:换行符是写的,但是在阅读时它们被删除了:

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

该文件被逐行读取并连接,因此换行符消失了。

我没有在记事本或其他东西中查看原始文件,因为我不知道在手机上查看的位置,并且我的日志屏幕使用了删除换行符的代码:-(

所以简单的灵魂是在阅读时把它放回去:

while (readString != null) {
                datax.append(readString);
                datax.append("\n");
                readString = buffreader.readLine();
            }
于 2015-02-11T21:27:03.947 回答
0

我执行了一个类似的程序,它对我有用。我观察到一个奇怪的行为。它将这些新行添加到文件中,但光标仍保留在第一行。如果你想验证,String在你的换行符后面写一个,你会看到String写在这些新行的下面。

于 2012-02-16T14:22:39.333 回答
0

我遇到了同样的问题,无法编写换行符。相反,我使用 BufferdWritter 将新行写入文件,它对我有用。这是一个示例代码片段:

OutputStreamWriter out = new OutputStreamWriter(openFileOutput("cache.txt",0));
BufferedWriter bwriter = new BufferedWriter(out);
// write the contents to the file
bwriter.write("Input String"); //Enter the string here
bwriter.newLine();
于 2013-01-29T00:58:25.390 回答