2012-02-16 70 views
5

我正尝试在android中向文本文件写入新行。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(); 
} 
+0

你是什么意思“不工作”?你如何检查它?还可以尝试用'foo'等简单的东西替换'data'并检查变量内容 – 2012-02-16 13:46:17

+0

当我在textedit,word或其他程序中打开它时,新行不会显示 – NikolajSvendsen 2012-02-16 13:47:57

+0

尝试使用虚拟文本,它不会显示w扫。 – NikolajSvendsen 2012-02-16 13:59:20

回答

0

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

0

我有同样的问题,无法写一个换行符。相反,我使用BufferdWritter在文件中写入新行,它适用于我。 下面是一个示例代码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(); 
2

我有同样的问题,试图在书中每招。

我的问题:换行的写,但是在读他们被拆除:

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

该文件读取线和级联线,所以换行的消失。

我没有看在记事本中的原始文件或东西,因为我不知道去哪里找我的电话,我的logscreen使用哪种去除换行符的:-(

那么简单soultion代码在阅读时将它放回原处:

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