20 Stimmen

Android - Nur-Lese-Dateisystem IOException

Ich versuche, in eine einfache Textdatei auf dem Android-System zu schreiben. Dies ist mein Code:

public void writeClassName() throws IOException{
    String FILENAME = "classNames";
    EditText editText = (EditText) findViewById(R.id.className);
    String className = editText.getText().toString();

    File logFile = new File("classNames.txt");
       if (!logFile.exists())
       {
          try
          {
             logFile.createNewFile();
          } 
          catch (IOException e)
          {
             // TODO Auto-generated catch block
             e.printStackTrace();
          }
       }
       try
       {
          //BufferedWriter for performance, true to set append to file flag
          BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); 
          buf.append(className);
          buf.newLine();
          buf.close();
       }
       catch (IOException e)
       {
          // TODO Auto-generated catch block
          e.printStackTrace();
       }

Dieser Code erzeugt jedoch eine "java.io.IOException: open failed: EROFS (Nur-Lese-Dateisystem)"-Fehler. Ich habe versucht, die Berechtigungen in meiner Manifestdatei wie folgt hinzuzufügen, ohne Erfolg:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hellolistview.com"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".ClassView"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

     <activity 
        android:name=".AddNewClassView" 
        />

</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Hat jemand eine Idee, was das Problem ist?

87voto

Jug6ernaut Punkte 8179

Da Sie versuchen, die Datei in Root zu schreiben, müssen Sie den Dateipfad zu Ihrem Dateiverzeichnis angeben.

Exemple

String filePath = context.getFilesDir().getPath().toString() + "/fileName.txt";
File f = new File(filePath);

3voto

Andrey Ermakov Punkte 3278

Versuchen Sie, den Ansatz aus diesem Artikel im Entwicklerhandbuch:

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X