Копирование файлов активов на SD-карту (файл не найден)?

Я пытаюсь скопировать файлы для использования Tesseract, и независимо от того, как я пытаюсь, он продолжает выдавать мне исключения filenot found. Я не понимаю, почему, потому что они у меня есть в папке с ресурсами. Я попробовал это одним способом, скопировав конкретную папку tessdata, которая не работала, поэтому я попытался поместить их все в папку общих активов и скопировать каждый файл в новый каталог, который я создал на карте с именем tessdata.

Вот изображение файлов в папке, метод копирования и ошибки журнала, которые публикуются:

введите здесь описание изображения

И вот код:

private void copyAssets() {
    AssetManager assetManager = getAssets();
    String[] files = null;
    try {
        files = assetManager.list("");
    } catch (IOException e) {
        android.util.Log.e(TAG, "Failed to get asset file list.", e);
    }
    for(String filename : files) {
        InputStream in = null;
        OutputStream out = null;
        try {
          in = assetManager.open(filename);
          out = new FileOutputStream(tesspath+ "/" + filename);
          copyFile(in, out);
          in.close();
          in = null;
          out.flush();
          out.close();
          out = null;
        } catch(IOException e) {
            android.util.Log.e("tag", "Failed to copy asset file: " + filename, e);
        }       
    }
}

-Я также пытался использовать этот метод из примера, который скопировал их из папки tessdata в активах-

if (!(new File(tesspath + File.separator + lang + ".traineddata")).exists()) {
        copyAssets();
        /* try {
            AssetManager assetManager = getAssets();
            //open the asset manager and open the traineddata path
            InputStream in = assetManager.open("tessdata/eng.traineddata");
            android.util.Log.e(TAG, "OPENED SUCCESSFULLY IF NO ERROR BEFORE THIS");
            OutputStream out = new FileOutputStream(tesspath + "/eng.traineddata");
            android.util.Log.e(TAG, "WRITING NOW  TO" + tesspath);
            byte[] buf = new byte[8024];
            int len;
            while ((len = in.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
            in.close();
            out.close();
        } catch (IOException e) {
            android.util.Log.e(TAG, "Was unable to copy " + lang
                    + " traineddata " + e.toString());
            android.util.Log.e(TAG, "IM PRINTING THE STACK TRACEs");
            e.printStackTrace();
        }
        */
    } else {
        processImage(STORAGE_PATH + File.separator + "savedAndroid.jpg");
    }

person user1088595    schedule 06.05.2013    source источник


Ответы (1)


Вы проверили права записи SD-карты в manifest.xml? возможно, вам это понадобится в AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
person user3440879    schedule 20.03.2014