我想写入我的应用程序的内部文件目录,但是我收到以下错误:
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
遇到这个只读问题?
答案 0 :(得分:0)
getFilesDir()
是/data/data/com.example.apk/files
您无需使用这些权限。
它说filenotfound
。尝试先创建它。
然而,这很奇怪