Java Android open失败:EROFS(只读文件系统)错误

Java Android open失败:EROFS(只读文件系统)错误,java,android,filenotfoundexception,Java,Android,Filenotfoundexception,我在将zip文件的内容提取到SD卡上的目录时遇到问题。调试应用程序时,我可以看到错误列表为java.io.FileNotFoundException:/testFile.zip:open failed:EROFS(只读文件系统)error 我已经确保清单文件中包含 我有点不明白为什么我会收到这封邮件,因为我想解压的内容都在SD卡上 记录文件夹路径,并确保它们指向您期望的位置 因为我们没有所有相关的代码,所以很难确定问题是什么,或者即使代码中有问题 我刚刚得到了一个简单的示例,使用来自的代码进

我在将zip文件的内容提取到SD卡上的目录时遇到问题。调试应用程序时,我可以看到错误列表为
java.io.FileNotFoundException:/testFile.zip:open failed:EROFS(只读文件系统)error

我已经确保清单文件中包含


我有点不明白为什么我会收到这封邮件,因为我想解压的内容都在SD卡上

记录文件夹路径,并确保它们指向您期望的位置

因为我们没有所有相关的代码,所以很难确定问题是什么,或者即使代码中有问题

我刚刚得到了一个简单的示例,使用来自的代码进行了工作和测试。 也许这将有助于看到一个可用的示例作为参考,以确保您的代码是正确的

我使用了一个简单的zip文件,其中包含两个嵌套文件夹和一个文本文件
hello/secondFolder/hello.txt

正如您在日志中所看到的,它正在我的设备上使用虚拟的
sdcard
/storage/emulated/0/

Decompress.java(直接从上面的链接获取):

MainActivity.java:

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        String zipFile = Environment.getExternalStorageDirectory() + "/helloWithFolder.zip";
        String unzipLocation = Environment.getExternalStorageDirectory() + "/unzipped/";

        Log.d("Unzip", "Zipfile: " + zipFile);
        Log.d("Unzip", "location: " + unzipLocation);

        Decompress d = new Decompress(zipFile, unzipLocation);
        d.unzip();
    }
日志:

验证是否已成功解压缩:

shell@jfltetmo:/sdcard $ cd unzipped
shell@jfltetmo:/sdcard/unzipped $ ls
hello
shell@jfltetmo:/sdcard/unzipped $ cd hello
shell@jfltetmo:/sdcard/unzipped/hello $ ls
secondFolder
shell@jfltetmo:/sdcard/unzipped/hello $ cd secondFolder
shell@jfltetmo:/sdcard/unzipped/hello/secondFolder $ ls
hello.txt
shell@jfltetmo:/sdcard/unzipped/hello/secondFolder $ cat hello.txt
hello
编辑: 我刚用一个错误的zip名称进行了测试,结果出现了以下错误:


java.io.FileNotFoundException:/storage/emulated/0/helloBad.zip:open失败:enoint(没有这样的文件或目录)

请发布您的
FileManagement
类。并发布所选文件和droppeItem的值,确保它们位于您可以合法写入的位置。selectedItem是我正在从列表中拖动的项目。它由
item.getText().toString()设置其中项为
ClipData.item item=event.getClipData().getItemAt(0)我没有包括fileManagement类,因为它非常非常长。您被要求告诉selectedItem的值是多少。不是你怎么来的,因为我们不知道这条路会变成什么样子。selectedItem中的路径是什么?你打算把解压后的文件存放在哪里?请输入准确路径。
错误列为java.io.FileNotFoundException:/testFile.zip:
。我不相信你。如果你真的想保存到SD卡,你会看到一个绝对路径。不是一个短文件名。为什么是领先空间?
04-03 12:11:06.472  19427-19427/com.zipfile.daniel.zipfileextract D/Unzip﹕ Zipfile: /storage/emulated/0/helloWithFolder.zip
04-03 12:11:06.472  19427-19427/com.zipfile.daniel.zipfileextract D/Unzip﹕ location: /storage/emulated/0/unzipped/
04-03 12:11:06.472  19427-19427/com.zipfile.daniel.zipfileextract V/Unzip﹕ Unzipping hello/
04-03 12:11:06.472  19427-19427/com.zipfile.daniel.zipfileextract V/Unzip﹕ Unzipping hello/secondFolder/
04-03 12:11:06.472  19427-19427/com.zipfile.daniel.zipfileextract V/Unzip﹕ Unzipping hello/secondFolder/hello.txt
shell@jfltetmo:/sdcard $ cd unzipped
shell@jfltetmo:/sdcard/unzipped $ ls
hello
shell@jfltetmo:/sdcard/unzipped $ cd hello
shell@jfltetmo:/sdcard/unzipped/hello $ ls
secondFolder
shell@jfltetmo:/sdcard/unzipped/hello $ cd secondFolder
shell@jfltetmo:/sdcard/unzipped/hello/secondFolder $ ls
hello.txt
shell@jfltetmo:/sdcard/unzipped/hello/secondFolder $ cat hello.txt
hello