【发布时间】:2017-10-18 02:31:07
【问题描述】:
我想写入应用程序的内部文件目录,但出现以下错误:
java.io.FileNotFoundException: com.android.internal.os.AndroidPrintStream@47a0990 (Read-only file system)
所以它说它是“只读”存储。我正在使用getFilesDir() 来检索路径,并且我在网上看到了很多人们使用它来写入内部存储的示例。为什么我会看到此错误?
我的代码如下:
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
// Root element
Element rootElement = doc.createElement("license");
doc.appendChild(rootElement);
// Write content to XML file.
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(context.getFilesDir().getPath() + "/license.xml"));
System.out.println("Saving to: " + context.getFilesDir().getPath());
transformer.transform(source, result);
在我的代码的最后一行抛出异常。
我的清单中有以下权限:
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
注意,我不想写入外部存储,因为该文件不应该对用户可见。
我可以使用FileOutputStream 写入同一目录而不会引发任何异常...那么为什么Transformer 会遇到这个只读问题?
【问题讨论】:
-
您的文件在设备内存或 SD 卡中?
-
它应该在设备内存中,在 /data/user/0/[my app]/files
-
@petehallw 你用的是什么设备?
-
@Vyacheslav 我正在使用装有 Android 7.0 的 Moto G4 手机。
-
@petehallw:您尝试过共享首选项选项
标签: java android xml internal-storage transformer