2017-05-18 2 views
1

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?

+0

Ihre Datei im Gerätespeicher oder SD-Karte? – sasikumar

+0

Es sollte im Gerätespeicher sein, in/data/user/0/[meine app]/files – petehallw

+0

@petechallw welches Gerät verwenden Sie? – Vyacheslav

Antwort

0

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

Sie müssen nicht diese Berechtigungen zu verwenden.

Es heißt filenotfound. Versuchen Sie es zuerst zu erstellen.

Dennoch ist es seltsam

Verwandte Themen