Перемещение TXT-файлов в папку вместо их удаления в Java - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть код для объединения текстовых файлов из папки и перемещения объединенного файла в другую папку.Мой код работает хорошо, но он удаляет файлы после их объединения, поэтому я хотел бы переместить эти файлы в другую папку сразу после их объединения.

Мои файлы из c: \ source должны быть перемещены в c: \ Archive

Это была моя ошибка при запуске, я хотел переместить файлы, но я удалил их !!И я хотел бы выдать исключение, когда в исходной папке нет файлов.

Итак, мой код:

PrintWriter pw = new PrintWriter(new FileOutputStream("C:/Target/Filec.txt"));// directory where concatenated file are created

    File file = new File("C:/Source");// where files have to be concatenated and move to c:\Archive before deleting

    File[] files2 = file.listFiles();

    for (int i = 0; i < files2.length; i++)
    {

      File currentFile = files2[i];

      System.out.println("Processing " + currentFile.getPath() + "... ");

      BufferedReader br = new BufferedReader(new FileReader(currentFile));

      String line = br.readLine();

      while (line != null)
      {
        pw.println(line);
        line = br.readLine();
      }
      br.close();
      if (!currentFile.delete())
      {
        // Failed to delete file
        System.out.println("Failed to delete "+ currentFile.getName());
      }
    }
    pw.close();
    System.out.println("All files have been concatenated into Filec.txt");
    }
}

Спасибо

Ответы [ 3 ]

2 голосов
/ 22 февраля 2011

Чтобы переместить файл, вы используете source.renameTo(targetFile).

Если в исходном каталоге нет файлов, listFiles() вернет пустой массив, поэтому просто проверьте это и киньте.

Также, если вы хотите просто слепо объединять файлы, которые вам не нужно читать построчно, просто откройте FileInputStream, прочитайте куски в байт [] и запишите, используя FileOutputStream.Вероятно, будет намного эффективнее и проще.

1 голос
/ 22 февраля 2011

Вместо File.delete () используйте FileUtils.moveFile () из apache commons

1 голос
/ 22 февраля 2011

Вы можете переместить файл так:

// File (or directory) to be moved
File file = new File("filename");

// Destination directory
File dir = new File("directoryname");

// Move file to new directory
boolean success = file.renameTo(new File(dir, file.getName()));
if (!success) {
    // File was not successfully moved
}
...