Versuchen, eine Datei in Android zu erstellen: open failed: EROFS (Read-only Dateisystem)

Diese Linie:

final FileOutputStream outputStream = new FileOutputStream(name); 

FileNotFoundException zu einer FileNotFoundException mit der Meldung /2ozjfFQzwv: open failed: EROFS (Read-only file system) wobei "2ozjfFQzwv" das ist, was ich als den Namen der Datei bestanden habe.

  • Android abbrechen Benachrichtigung
  • Eclipse-Fehler mit Plugins nach Update
  • Android: Wie kann ich die Kennwort-Eigenschaft in einem Bearbeitungstext festlegen?
  • ViewPager mit Fragmenten in PopupWindow (oder DialogFragment) - Fehler keine Ansicht für ID für Fragment gefunden
  • Wie kann ich das Android Library-Modul einrichten und von mehreren Projekten in Android Studio referenziert werden?
  • Wie zeigt man das Menü Popup genau unterhalb der Aktionsleiste an?
  • Ich habe das mit und ohne die WRITE_INTERNAL_STORAGE . Wie erstelle ich diese Datei zum Schreiben?

    Alternativ möchte ich nur in der Lage sein, ein Bild zu einer neuen Aktivität zu geben, und es ist zu groß, um es in einem Extra zu serialisieren. Gibt es einen einfacheren Weg, als es in eine Datei zu schreiben und dann wieder von ihm zu lesen? Alle Fragen hier scheinen über das Schreiben auf eine SD-Karte zu sein, die ich nicht machen möchte, weil viele Leute keine SD-Kartenslots haben.

  • Android-Ausrichtung ändert sich an
  • Best Practice für Android-Client, um mit einem Server mit Threads zu kommunizieren
  • Abrufen einer Liste von Klassen aus einem Paket in einem Android-Projekt
  • Android: Softkeyboard öffnen
  • Lesen aller heutigen Veranstaltungen mit CalendarContract - Android 4.0+
  • Wie erkennt man Datei- oder Ordneränderungen in Android?
  • 6 Solutions collect form web for “Versuchen, eine Datei in Android zu erstellen: open failed: EROFS (Read-only Dateisystem)”

    Ich habe das mit und ohne die Berechtigung WRITE_INTERNAL_STORAGE ausprobiert.

    Es gibt keine WRITE_INTERNAL_STORAGE Berechtigung in Android.

    Wie erstelle ich diese Datei zum Schreiben?

    Sie nicht, außer vielleicht auf einem verwurzelten Gerät, wenn Ihre App mit Superuser-Berechtigungen läuft. Sie versuchen zu schreiben, um die Wurzel der internen Speicher, die apps haben keinen Zugriff auf.

    Bitte verwenden Sie die Version des FileOutputStream Konstruktors, der ein File Objekt aufnimmt. Erstellen Sie das File Objekt, das von einem Ort aus basiert, auf den Sie schreiben können:

    • getFilesDir() (aufgerufen Ihre Activity oder andere Context )
    • getExternalFilesDir() (aufgerufen Ihre Activity oder andere Context )

    Letzteres benötigt WRITE_EXTERNAL_STORAGE als Berechtigung.

    Gibt es einen einfacheren Weg, als es in eine Datei zu schreiben und dann wieder von ihm zu lesen?

    Sie können es vorübergehend in ein statisches Datenelement setzen.

    Weil viele Leute keine SD-Kartenslots haben

    "SD-Kartenslots" sind im Großen und Ganzen irrelevant. 99% der Android-Geräte Benutzer haben externe Speicherung – die Ausnahme wird 4 + jährige Geräte, wo der Benutzer entfernt ihre SD-Karte. Geräte, die seit Mitte 2010 hergestellt werden, haben externe Lagerung als Teil des On-Board-Blitzes, nicht als Wechseldatenträger.

    Versuchen Sie es mit der Genehmigung von WRITE_EXTERNAL_STORAGE Sie sollten das verwenden, ob es eine externe Karte gibt oder nicht.

    Das funktioniert gut für mich:

     path = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_MOVIES); File file = new File(path, "/" + fname); 

    Und platziert meine Dateien in den entsprechenden Ordner

    Hinzufügen

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

    In manifest und gleich wie Martin:

     path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES); File file = new File(path, "/" + fname); 

    Es funktionierte.

    Hier ist einfaches Beispiel von Android-Entwickler .

    Grundsätzlich können Sie eine Datei im internen Speicher wie folgt schreiben:

     String FILENAME = "hello_file"; String string = "hello world!"; FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(string.getBytes()); fos.close(); 

    Wie andere schon erwähnt haben, kann die App auf Android keine Datei an einen beliebigen Ordner des internen Speichers, sondern an ihren eigenen privaten Speicher (der unter / data / data / PACKAGE_NAME) ist.

    Sie sollten die API verwenden, um den richtigen Pfad zu erhalten, der für Ihre App erlaubt ist.

    Lese dies

    Google hat den Schreibzugriff auf die externe sdcard beschränkt. Von API 19 gibt es ein Framework namens Storage Access Framework, das Ihnen erlaubt, die "Verträge" einzurichten, um Schreibzugriff zu ermöglichen.

    Für weitere Infos:

    Android – Wie man neue Storage Access Framework verwendet, um Dateien auf externe SD-Karte zu kopieren

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.