当前位置 : 首页 » 互动问答 » 正文

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

分类 : 互动问答 | 发布时间 : 2013-03-30 04:42:22 | 评论 : 6 | 浏览 : 88189 | 喜欢 : 35

This line:

final FileOutputStream outputStream = new FileOutputStream(name);

导致 FileNotFoundException ,消息为 / 2ozjfFQzwv:open failed:EROFS(只读文件) system),其中“2ozjfFQzwv”是我传递的文件名。

我在使用和不使用 WRITE_INTERNAL_STORAGE 权限的情况下尝试了这个。如何创建此文件进行编写?

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

回答(6)

  • 1楼
  • 我已尝试使用和不使用WRITE_INTERNAL_STORAGE权限。

    Android中没有 WRITE_INTERNAL_STORAGE 权限。

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

    除非在root设备上,如果您的应用程序以超级用户权限运行。您正在尝试写入内部存储的根目录,哪些应用程序无权访问。

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

    • getFilesDir()(在Activity or other Context)
    • getExternalFilesDir()上调用) 上调用(在Activity or other Context)

    后者需要 WRITE_EXTERNAL_STORAGE 作为权限。

    是否有比将其写入文件然后再从中读取更容易的方法?

    您可以暂时将其放入静态数据中会员。

    因为很多人没有SD卡插槽

    “SD卡插槽”基本上是无关紧要的.99%的Android设备用户将拥有外部存储 - 例外将是4岁以上用户移除SD卡的设备。自2010年中期开始生产的设备将外部存储作为板载闪存的一部分,而不是可移动介质。

  • 2楼
  • 尝试使用WRITE_EXTERNAL_STORAGE的权限 您应该使用它是否有外部卡。

    这适用于我:

     path = Environment.getExternalStoragePublicDirectory(
                    Environment.DIRECTORY_MOVIES);
    文件文件=新文件(路径,“/”+ fname);
    

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

  • 3楼
  • Adding

    <uses-permission android:name =“android.permission.WRITE_EXTERNAL_STORAGE”/>
     <uses-permission android:name =“android.permission.READ_EXTERNAL_STORAGE”/>
    清单中的

    与Martin一样使用:

     path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
    文件文件=新文件(路径,“/”+ fname);

    It worked.

  • 4楼
  • 以下是来自 android developer .

    的简单示例基本上,您可以在内部存储中编写一个文件,如下所示:

     String FILENAME =“hello_file”;
    String string =“hello world!”;
    
    FileOutputStream fos = openFileOutput(FILENAME,Context.MODE_PRIVATE);
    fos.write(string.getBytes());
    fos.close();
  • 5楼
  • 正如其他人所提到的,Android上的应用程序无法将文件写入内部存储的任何文件夹,而是自己的私有存储(位于/ data / data / PACKAGE_NAME下)。

    您应该使用API​​来获取正确的路径这是您的应用程序允许的。

    read this .

相关阅读:

What is 'Context' on Android?

Location of sqlite database on the device

Set the layout weight of a TextView programmatically

Disabling of EditText in android

How to print all key and values from HashMap in Android?

How To Set Text In An EditText

With android studio no jvm found, JAVA_HOME has been set

ADB Android Device Unauthorized

How to insert a SQLite record with a datetime set to 'now' in Android application?

XXHDPI and XXXHDPI dimensions in dp for images and icons in android