以下代码段似乎成功创建了一个文件,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()创建一个文件,但是没有数据写入它。应用程序正常运行而不丢弃任何东西。我只是不明白:'(
答案 0 :(得分: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();
答案 1 :(得分:0)
如果您在写入文件后调用FileOutputStream.FileOutputStream(File),则所有数据都将被删除。看看这个主题:How to write data with FileOutputStream without losing old data?