android复制文件显示错误

时间:2012-07-07 11:09:23

标签: java android file

显示07-07 16:34:48.270:W / System.err(6050):复制java.io.IOException 我已经获得了许可

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 

文件复制代码:

  File file = new File("/mnt/sdcard/infobooks/");

            if (file.exists() == false) {
                file.mkdirs();
            }

            InputStream myInput = this.getAssets().open("Book4.pdf");
            String outFileName = Environment.getExternalStorageDirectory()+"/infobooks/Book4.pdf";
            File file2=new File(outFileName);
            file2.createNewFile();

            FileOutputStream myOutput = new FileOutputStream(outFileName);

            // transfer bytes from the inputfile to the outputfile
            byte[] buffer = new byte[1024];
            int length;
            while ((length = myInput.read(buffer)) > 0) {
                myOutput.write(buffer, 0, length);
            }

            // Close the streams
            myOutput.flush();
            myOutput.close();
            myInput.close();

1 个答案:

答案 0 :(得分:0)

从它的声音来看,你的错误与写入外部存储有关,而不是从资产中读取。文件&#39; Book4.pdf&#39;存在于资产目录中?它有多大?您运行的是哪个版本的Android?曾经有一段时间,当使用压缩时,Android对资产的文件大小有限制。在Android 2.3之前,AssetManager无法读取大型压缩文件(大型压缩文件在未压缩状态下意味着超过1MB)。解决这个问题的方法是不压缩文件(通过给它一个扩展,aapt跳过压缩,例如jpg或png),转到命令行构建,或者将文件拆分成更小的块,然后在设备上重新构建它们。

但是,如果没有完整的堆栈跟踪,我们无法真正知道错误的原因是什么。