2016-08-23 2 views
0

Я скопирую файл из папки Asset в eclipse в Sdcard Genymotion Virtual Device, но у меня возникла ошибка: java.io.FileNotFoundException:/storage/emulated/0/tesseract/tessdata/eng.traineddata: open failed: ENOENT (Нет такого файла или каталога).open failed: ENOENT (Нет такого файла или каталога) Ошибка Копировать файл из Asset в SdCard

Пожалуйста, помогите мне P/s: Я был добавлен WRITE_EXTERNAL_STORAGE в файле манифеста. Это мой код

AssetManager assetManager = getActivity().getAssets(); 
    File file = new File(Environment.getExternalStorageDirectory() 
      + "/tesseract/tessdata", lang + ".traineddata"); 
    if (!(file.exists())) { 
     try { 
      InputStream in = assetManager.open("tessdata/" + lang 
        + ".traineddata"); 
      String sdCardPath = Environment.getExternalStorageDirectory() 
        + "/tesseract/tessdata"; 
      File outFile = new File(sdCardPath + "/", lang + ".traineddata"); 
      OutputStream out = new FileOutputStream(outFile); 
      copyFile(in, out); 
      in.close(); 
      in = null; 
      out.flush(); 
      out.close(); 
      out = null; 
     } catch (IOException e) { 
      Log.e("tag", "Failed to copy asset file: " + lang 
        + ".traineddata", e); 
     } 
    } 
+0

вы работаете на Android 6.0? Если да, то вам нужно предоставить разрешение во время выполнения или что – Bhumit

+0

да, я работаю на Android 6.0. – HuynhHan

ответ

1

Используйте этот

AssetManager assetManager = getActivity().getAssets(); 
    File file = new File(Environment.getExternalStorageDirectory() 
      + "/tesseract/tessdata", lang + ".traineddata"); 
    if (!(file.exists())) { 
     try { 
      InputStream in = assetManager.open("tessdata/" + lang 
        + ".traineddata"); 
      String sdCardPath = Environment.getExternalStorageDirectory() 
        + "/tesseract/tessdata"; 
      new File(sdCardPath).mkdirs(); 
      File outFile = new File(sdCardPath + "/", lang + ".traineddata"); 
      OutputStream out = new FileOutputStream(outFile); 
      copyFile(in, out); 
      in.close(); 
      in = null; 
      out.flush(); 
      out.close(); 
      out = null; 
     } catch (IOException e) { 
      Log.e("tag", "Failed to copy asset file: " + lang 
        + ".traineddata", e); 
     } 
    } 
+0

Ваше решение отлично работает. Большое вам спасибо Sabish.M – HuynhHan

+0

Отметьте как ответ. –

Смежные вопросы