2015-09-04 2 views
2

Я хочу прочитать каталог и создать тот же файл и подкаталоги в другом каталоге.прочитать каталог и создать такую ​​же структуру

Путь к каталогу будет определяемым пользователем значением.

private static void readFiles(File sourceFolder, String destePath) { 
     if (sourceFolder.isDirectory()) 
      for (File sourceFile : sourceFolder.listFiles()) { 
       if (sourceFile.isFile()) { 
        File destFile = new File(destePath + "/" 
          + sourceFile.getName()); 
        updateConnectorXML(sourceFile, destFile); 
       } else { 
        { 
         destePath = destePath + "/" + sourceFile.getName(); 
         File destFile = new File(destePath); 
         destFile.mkdir(); 
         readFiles(sourceFile, destePath); 
        } 
       } 

      } 
    } 

здесь e.d Исходный_файл будет «C:/а», который является каталогом, и я чтение файлов и вложенных каталоги ИОГО. Теперь в updateConnectorXML(sourceFile, destFile) Я просто обновляю файлы XML.

Теперь я хочу создать такую ​​же структуру каталогов в другой папке с обновленными XML-файлами.

В приведенном выше коде destePath изменяется только на одну директорию, и все файлы идут в каталог. Как я могу вернуться из этого каталога?

+0

Итак, вы хотите скопировать файлы в другой каталог? –

+0

Возможный дубликат [Копировать содержимое всего каталога в другой каталог?] (Http://stackoverflow.com/questions/6214703/copy-entire-directory-contents-to-another-directory) –

+0

Я предполагаю, что вы хотите, чтобы изменения были изменены быть применимым к вашей файловой системе ?, даже если ваш код говорит иначе! – QuakeCore

ответ

0

Одной из основных ошибок является повторное использование параметра destePath для хранения различных путей подкаталогов. Сравнить:

private static void readFiles(File sourceFolder, String destePath) { 
    if (sourceFolder.isDirectory()){ 
     for (File sourceFile : sourceFolder.listFiles()) { 
      if (sourceFile.isFile()) { 
       File destFile = new File(destePath + "/" 
         + sourceFile.getName()); 
       updateConnectorXML(sourceFile, destFile); 
      } else { 
       String subPath = destePath + "/" + sourceFile.getName(); 
       File destDir = new File(subPath); 
       destDir.mkdir(); 
       readFiles(sourceFile, subPath); 
      } 
     } 
    } 
} 
Смежные вопросы