首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在Android: open中创建文件失败: EROFS (只读文件系统)

尝试在Android: open中创建文件失败: EROFS (只读文件系统)
EN

Stack Overflow用户
提问于 2013-03-30 04:42:23
回答 8查看 121.9K关注 0票数 60

这一行:

代码语言:javascript
复制
final FileOutputStream outputStream = new FileOutputStream(name);

生成一个消息为/2ozjfFQzwv: open failed: EROFS (Read-only file system)FileNotFoundException,其中"2ozjfFQzwv“是我作为文件名传递的内容。

无论有没有WRITE_INTERNAL_STORAGE权限,我都试过了。如何创建此文件以进行写入?

或者,我只希望能够为新的活动提供图像,但它太大了,无法在额外的活动中序列化它。有没有一种更简单的方法,比把它写到文件然后再从文件中读取更简单?这里的所有问题似乎都是关于写入SD卡的,这是我不想做的,因为许多人没有SD卡插槽。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-03-30 04:54:53

无论有没有WRITE_INTERNAL_STORAGE权限,我都试过了。

安卓没有WRITE_INTERNAL_STORAGE权限。

如何创建此文件以进行写入?

如果您的应用程序是以超级用户权限运行的,则不需要,除非您的应用程序是以超级用户权限运行的。您正在尝试写入应用程序无权访问的内部存储的根目录。

请使用接受File对象的FileOutputStream构造函数的版本。根据可以写入的某个位置创建File对象,例如:

  • getFilesDir() (在您的Context)
  • getExternalFilesDir()或其他Context)

上调用Activity或其他Activity

后者需要WRITE_EXTERNAL_STORAGE作为权限。

有没有一种比将其写入文件然后再次读取它更简单的方法?

您可以将其临时放在静态数据成员中。

,因为很多人没有SD卡插槽

“SD卡插槽”基本上是无关紧要的。99%的安卓设备用户都会有外部存储器--只有4+使用一年的设备例外,因为用户把他们的SD卡取出来了。自2010年年中开始生产的设备将外部存储作为板载闪存的一部分,而不是作为可移动介质。

票数 92
EN

Stack Overflow用户

发布于 2013-03-30 05:40:25

请尝试使用WRITE_EXTERNAL_STORAGE的权限,无论是否有外部卡都应使用该权限。

这对我来说很好用:

代码语言:javascript
复制
path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_MOVIES);
File file = new File(path, "/" + fname);

并将我的文件放在适当的文件夹中。

票数 17
EN

Stack Overflow用户

发布于 2013-03-30 04:58:30

下面是来自android developer的简单示例。

基本上,你可以像这样在内存中写一个文件:

代码语言:javascript
复制
String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15711098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档