Я пытаюсь скопировать файлы из одного каталога в другой.
Но так как я должен копировать их одновременно, я подумал, что было бы неплохо использовать потоки, чтобы мое программное обеспечение не зависало при копировании.
Проблема в том, что потоки должны быть закрыты (вручную), и я не знаю, на какой обратный вызов я могу подписаться, чтобы узнать, когда завершится процесс копирования.
Для выполнения задачи копирования я использую библиотеку Java apache.commons.io.FileUtils
, используя в основном функцию copyFileToDirectory
И мой код выглядит так:
//Thread to copy files from one place to another
public void CopyFileFromTo(String file, String fromDirectoryName, String destinationDirectoryName) throws IOException
{
//TODO: Establish when the thread has ended, no callbacks for CopyFileToDirectory? :(
//Copy from file to directory
Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
Path src = Paths.get(fromDirectoryName+"\\"+file);
Path dest = Paths.get(destinationDirectoryName);
try {
FileUtils.copyFileToDirectory(src.toFile(),dest.toFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
t.start();
}