2013-05-06 1 views
1

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

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

enter image description here

А вот код:

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); 
     }  
    } 
} 

-I также попытался используя этот метод из примера, который скопировал их из папки 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"); 
    } 

ответ

0

Вы проверили sdcard написать perssion в manifest.xml? , вероятно, вам понадобится это в AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
Смежные вопросы