1

我在 raw 文件夹中有一个 png 文件。我得到 inputStream 使用:

inputStream = getResources().openRawResource(R.raw.test);

我正在尝试将此 inputStream 写入 Android 应用程序的新文件中。这是我的代码:

                inputStream = getResources().openRawResource(R.raw.test);
                File file = new File("/test.png");
                outputStream = new FileOutputStream(file);
                int read = 0;
                byte[] bytes = new byte[1024*1024];

                while ((read = inputStream.read(bytes)) != -1) {
                    outputStream.write(bytes, 0, read);
                }

                outputStream.close();
                inputStream.close();

当我运行应用程序时,我在 logcat 中收到以下错误:

java.io.FileNotFoundException: /test.png: open failed: EROFS (Read-only file system)

基本上我想创建一个 File 对象,以便我可以将它发送到我的服务器。谢谢你。

4

2 回答 2

0

您将无权访问文件系统根目录,这是您尝试访问的内容。出于您的目的,您可以写入内部文件new File("test.png"),这会将文件放置在应用程序内部存储中——更好的是,使用getFilesDir().

对于真正的临时文件,您可能需要查看getCacheDir()——如果您忘记删除这些临时文件,系统将在空间不足时回收空间。

于 2013-05-30T23:40:17.590 回答
0

这是我的解决方案:

                inputStream = getResources().openRawResource(R.raw.earth);
                file = new File(Environment.getExternalStorageDirectory() + File.separator + "test.png");
                file.createNewFile();
                outputStream = new FileOutputStream(file);
                int read = 0;
                byte[] bytes = new byte[1024*1024];
                while ((read = inputStream.read(bytes)) != -1) {
                    outputStream.write(bytes, 0, read);
                }
                outputStream.close();
                inputStream.close();
于 2013-05-31T01:17:45.353 回答