1

以下代码片段似乎成功创建了一个文件,并且该writeData函数适当地写入StringWriter,但是该文件似乎是空的..

fileOutputStream = new FileOutputStream(selectedFile);

if(!selectedFile.exists())
    selectedFile.createNewFile();


StringWriter writer = new StringWriter();
serializer.setOutput(writer);

Log.i(TAG, "- Output is asigned to the special Serializer object");     

/* The target data is written to the a string buffer in the StringWriter */
writeData(serializer, templateData); 

Log.i(TAG, String.format("- New file Data written: %s", writer.toString())); // Logcat prints the file data from this string beautifully..      

fileOutputStream.write(writer.toString().getBytes()); // Not happening?! Why :(
fileOutputStream.close();

字符串肯定不是空的!

然而,创建的文件是空的!我也尝试过OuputStreamWriter类似的变化,但文件没有写入。为什么?我正在 Nexus 7 平板电脑上对此进行测试,并且我拥有WRITE_EXTERNAL_STORAGE权限集。

更新:所有文件都是在这个过程中创建的。文件的访问权限创建为“_rw”。

我使用的其他方法给出了完全相同的结果:

FileWriter fw = new FileWriter(selectedFile.getPath());
fw.write(writer.toString());
fw.flush();
fw.close();

在所有情况下,文件都是通过 createNewFile() 创建的,但从未向其中写入任何数据。该应用程序正常运行而不会抛出任何东西。我只是不明白:'(

4

2 回答 2

0

如果您在写入文件后调用 FileOutputStream.FileOutputStream(File),则所有数据都将被删除。查看此线程:如何使用 FileOutputStream 写入数据而不丢失旧数据?

于 2012-10-17T21:30:13.340 回答
0
FileOutputStream fOut = openFileOutput(selectedFile);//u can use (filename, Context.MODE_APPEND | Context.MODE_WORLD_READABLE)

if(!selectedFile.exists())
    selectedFile.createNewFile();

OutputStreamWriter osw = new OutputStreamWriter(fOut);
      osw.append(templateData);
      osw.flush();
      osw.close();
于 2012-10-17T17:14:32.893 回答