使用getFilesDir()提供'只读文件系统'错误(Android)

时间:2017-05-18 10:16:11

标签: java android xml internal-storage transformer

我想写入我的应用程序的内部文件目录,但是我收到以下错误:

java.io.FileNotFoundException: com.android.internal.os.AndroidPrintStream@47a0990 (Read-only file system)

所以它说是“只读”#39;存储。我正在使用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);

在我的代码的最后一行抛出异常。

我的Manifest中有以下权限:

<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遇到这个只读问题?

1 个答案:

答案 0 :(得分:0)

getFilesDir()/data/data/com.example.apk/files

您无需使用这些权限。

它说filenotfound。尝试先创建它。

然而,这很奇怪