安卓无法在文本文件中换行写入

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,还尝试获取换行符的系统属性,但都没有起作用。

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

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

你说的“不起作用”是什么意思?你怎样检查它?同时,尝试用类似“foo”的简单字符串替换"data",看看变量内容是否会引起问题。 - Boris Strandjev
当我在TextEdit、Word或其他任何程序中打开它时,新行不会显示。 - NikolajSvendsen
尝试使用虚拟文本,但它没有起作用。 - NikolajSvendsen
你说过文件已创建,数据已写入,但没有新行?你能否尝试复制这两个写操作:osw.write(data); osw.write(newline); 我想看看是否至少会显示一个新行。 - Boris Strandjev
@NikolajSvendsen,“data”变量包含什么?根据您的代码,您只期望在文件末尾有一个新行吗? - praetorian droid
数据包含另一个文件的数据,我对上面进行了编辑。它是否可能是因为在读取第一个文件时跳过了断点? - NikolajSvendsen
3个回答

3

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

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

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

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

我没有在记事本或其他地方查看原始文件,因为我不知道在手机上该去哪里查看,而我的日志屏幕使用了删除换行符的代码:-(

所以解决方法很简单,在读取时将其放回:

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

0

我曾经遇到过同样的问题,无法写入新行。相反,我使用BufferedWriter将新行写入文件,这对我很有效。

以下是一个示例代码片段:

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

0

我执行了一个类似的程序,它对我起作用了。不过我观察到了一个奇怪的行为。它在文件中添加了这些新行,但光标仍然停留在第一行。如果你想验证一下,可以在换行符后面写一个String,你会发现这个String被写在那些新行的下方。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接