Ich möchte meine Anwendung internen Dateiverzeichnis schreiben, aber ich erhalte den folgenden Fehler:Schreiben in die Datei getFilesDir mit() geben ‚Read-only-Dateisystem‘ Fehler (Android)
java.io.FileNotFoundException: [email protected] (Read-only file system)
So es heißt, es ist 'schreibgeschützter' Speicher. Ich verwende getFilesDir()
, um den Pfad abzurufen, und ich habe viele Beispiele online von Leuten gesehen, die diese verwenden, um in den internen Speicher zu schreiben. Warum sehe ich diesen Fehler?
Mein Code ist unten:
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);
Die Ausnahme in der letzten Zeile meines Codes geworfen wird.
Ich habe die folgenden Berechtigungen in meinem 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" />
Hinweis, ich habe nicht auf externe Speicher schreiben möchten, da diese Datei für Benutzer nicht sichtbar sein sollte.
Ich kann mit einer FileOutputStream
in das gleiche Verzeichnis schreiben, ohne dass es irgendeine Ausnahme wirft ... also warum stößt die Transformer
dieses schreibgeschützte Problem?
Ihre Datei im Gerätespeicher oder SD-Karte? – sasikumar
Es sollte im Gerätespeicher sein, in/data/user/0/[meine app]/files – petehallw
@petechallw welches Gerät verwenden Sie? – Vyacheslav