无法从assets文件夹复制到SD卡

时间:2015-05-27 15:17:16

标签: android assets tesseract

我正在尝试从我的资产文件夹复制到我的SD卡,但每次我尝试它总是说找不到文件。这是我的代码:

  if (!(new File(Environment.getExternalStorageDirectory() + "tessdata/eng.traineddata"))
                .exists()) {
            try {

                AssetManager assetManager = getAssets();
                InputStream in = assetManager.open("/assets/tessdata/eng.traineddata");
                // GZIPInputStream gin = new GZIPInputStream(in);
                OutputStream out = new FileOutputStream(Environment.getExternalStorageDirectory()
                        + "tessdata/eng.traineddata");

                // Transfer bytes from in to out
                byte[] buf = new byte[1024];
                int len;
                // while ((lenf = gin.read(buff)) > 0) {
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                in.close();
                // gin.close();
                out.close();

                Log.d("", "Copied eng.traineddata");
            } catch (IOException e) {
                Log.d("",
                        "Was unable to copy eng.traineddata "
                                + e.toString());
            }
        }

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

将来,请发布整个堆栈跟踪,而不仅仅是您对错误消息的解释。

至少,这可能不是你想要的:

InputStream in = assetManager.open("/assets/tessdata/eng.traineddata");

项目中的assets/目录是您在open()上向AssetManager提供的路径的一部分。因此,除非您的项目中有assets/assets/tessdata/eng.traineeddata(请注意重复的assets/),否则您可能需要:

InputStream in = assetManager.open("tessdata/eng.traineddata");