Java 安卓赢了';不要在文本文件中写入新行

Java 安卓赢了';不要在文本文件中写入新行,java,android,android-file,Java,Android,Android File,我正试图在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(new

我正试图在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();
}

我执行了一个类似的程序,它对我有效。但我观察到一种奇怪的行为。它将这些新行添加到文件中,但光标仍保留在第一行。如果要验证,请在换行符后写入
字符串
,您将看到
字符串
就写在这些新行的下方。

我也遇到了同样的问题,无法写入换行符。相反,我使用BufferdWriter在文件中写入新行,这对我来说很有用。 下面是一个示例代码sniplet:

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

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

我的问题是:新行是写出来的,但在阅读时却被删除了:

while (readString != null) {
                datax.append(readString);
                readString = buffreader.readLine();
            }
文件被逐行读取并连接,因此换行符消失了

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

因此,简单的解决方法是在阅读时将其放回原处:

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

“不工作”是什么意思?你如何检查它?还可以尝试用类似“foo”的简单内容替换
数据
,并检查变量内容是否会导致问题。当我在textedit、word或任何其他程序中打开它时,新行不会显示。尝试使用虚拟文本时,它不工作。你说1)文件已创建2)某些数据已写入其中3)新行未写入?你能试着复制两次写入吗:
osw.write(数据);osw.write(换行符)我想看看是否至少会显示一行。@NikolajSvendsen
数据
变量包含什么?您是否希望在文件末尾出现唯一的新行(根据您的代码)?