java - Android 无法写入文件

标签 java android file

下面的代码 fragment 似乎成功创建了一个文件,并且 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() 创建的,但不会向其中写入任何数据。该应用程序正常运行,不会抛出任何东西。我只是不明白:'(

最佳答案

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

关于java - Android 无法写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12939434/

相关文章:

java - 在 Java 正则表达式中匹配 A 但不匹配 B?

java - maven如何决定构建什么类型的项目以及如何控制单个maven项目中的多个模块?

Java,根据实例使用正确的构造函数

android - 使用动态 URL 改造 HTTP Get

java - 检测何时连接/断开 Wi-Fi

java - 如何捕获缺少 JSP 文件的异常

android - 使用最新的Gradle版本3.2.1时找不到源Java类

perl - 取消链接究竟是如何工作的?

安卓系统.ErrnoException : ioctl failed: EBADF (Bad file descriptor) with file from data/data folder

java - 分隔符在省略整数时会给出多余的空间