Попытка создать файл в Android: открыть не удалось: EROFS (файловая система только для чтения)
эта строка:
final FileOutputStream outputStream = new FileOutputStream(name);
результаты FileNotFoundException
с сообщением /2ozjfFQzwv: open failed: EROFS (Read-only file system)
где "2ozjfFQzwv" - это то, что я передал как имя файла.
Я пробовал С и без WRITE_INTERNAL_STORAGE
разрешения. Как создать этот файл для записи?
альтернативно, я просто хочу иметь возможность дать изображение для нового действия, и он слишком велик, чтобы сериализовать его в дополнительном. Есть ли более простой способ, чем записать его в файл, а затем снова прочитать из него? Все вопросы здесь, похоже, касаются записи на SD-карту, чего я не хочу делать, потому что у многих людей нет слотов для SD-карт.
6 ответов
я пробовал это с и без разрешения WRITE_INTERNAL_STORAGE.
нет WRITE_INTERNAL_STORAGE
разрешение в Android.
как создать этот файл для записи?
нет, разве что на корневое устройство, если ваше приложение работает с привилегиями суперпользователя. Вы пытаетесь записать в корень внутренней памяти, какие приложения не имеют доступа к.
пожалуйста используйте версию из FileOutputStream
конструктор, который принимает
попробуйте использовать разрешение WRITE_EXTERNAL_STORAGE Вы должны использовать это, есть ли внешняя карта или нет.
Это хорошо работает для меня:
path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_MOVIES);
File file = new File(path, "/" + fname);
и помещает мои файлы в соответствующую папку
добавлять
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
в манифесте и с использованием того же, что и Мартин:
path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
File file = new File(path, "/" + fname);
это сработало.
вот простой пример из разработчик android.
в принципе, вы можете написать файл во внутреннем хранилище следующим образом:
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
Как уже упоминалось, приложение на Android не может записать файл в любую папку внутреннего хранилища, но их собственное личное хранилище (которое находится под /data/data/PACKAGE_NAME ).
вы должны использовать API, чтобы получить правильный путь для вашего приложения.
читать этой .
Google ограничили доступ для записи на внешнюю sdcard. Из API 19 существует фреймворк под названием Storage Access Framework, который позволяет настроить "контракты", чтобы разрешить доступ на запись.
дополнительная информация: