2013-10-10 4 views
-1

У меня возникли проблемы с выяснением, почему мое приложение рушится каждый раз, когда я его открываю. Только когда я раскомментирую цикл for.Для приложения, вызывающего андроид для крушения

Я использую эту идею здесь, чтобы скопировать файлы из одного каталога в другой

How to programmatically move, copy and delete files and directories on SD?

однако эта часть (я старался как этот путь, и точно так же, как и в приведенной выше ссылке, используя детей строку , и т. д.)

for (File file : files) 
{ 
    CopyFile(file, target); 
} 

продолжает вызывать мое заявление. Я пробовал комментировать только эту часть, и приложение работает нормально (оно ничего не копирует, так как не имеет доступа к файлу)

Любые идеи?

private void CopyFile(File source, File target) throws IOException { 



    if (source.isDirectory()){ 

     File[] files = source.listFiles(); 
     for (File file : files) 
     { 
      CopyFile(file, target); 
     } 

    } else { 
     InputStream in = new FileInputStream(source); 
     OutputStream out = new FileOutputStream(Environment.getExternalStorageDirectory()); 

     byte[] buf = new byte[1024]; 
     int len; 
     while ((len = in.read(buf)) > 0){ 
      out.write(buf, 0, len); 
     } 
     in.close(); 
     out.close(); 

    } 
+1

У вас есть разрешения на чтение и запись с внешнего хранилища? –

+0

Может быть по ряду причин. Не могли бы вы разместить stacktrace? – Heinrisch

+0

Пожалуйста, разместите stacktrace и 'Class', где находится цикл' for'. – Emmanuel

ответ

0

Вы не можете ничего прочитать/данные/данные, кроме как из подкаталогов, управляемых вашим приложением.

/data/data/*packagename*/files 

это путь, возвращаемый Context.getFilesDir()

/data 

это путь, возвращаемый Environment.getDataDirectory().

Где ровно Вы ожидаете, что файлы будут, и как они туда попали?

+0

Действительно? Интересно. Как делают такие вещи, как root explorer и т. Д.? – user1324674

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