Использование потока
private static void copyFileUsingStream(File source, File dest) throws IOException {
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(source);
os = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
} finally {
is.close();
os.close();
}
}
Использование канала
private static void copyFileUsingChannel(File source, File dest) throws IOException {
FileChannel sourceChannel = null;
FileChannel destChannel = null;
try {
sourceChannel = new FileInputStream(source).getChannel();
destChannel = new FileOutputStream(dest).getChannel();
destChannel.transferFrom(sourceChannel, 0, sourceChannel.size());
}finally{
sourceChannel.close();
destChannel.close();
}
}
Использование Apache Commons IO LIB:
private static void copyFileUsingApacheCommonsIO(File source, File dest) throws IOException {
FileUtils.copyFile(source, dest);
}
Использование Java SE 7 файлов Класс: тест
private static void copyFileUsingJava7Files(File source, File dest) throws IOException {
Files.copy(source.toPath(), dest.toPath());
}
Производительность:
File source = new File("/Users/pankaj/tmp/source.avi");
File dest = new File("/Users/pankaj/tmp/dest.avi");
//copy file conventional way using Stream
long start = System.nanoTime();
copyFileUsingStream(source, dest);
System.out.println("Time taken by Stream Copy = "+(System.nanoTime()-start));
//copy files using java.nio FileChannel
source = new File("/Users/pankaj/tmp/sourceChannel.avi");
dest = new File("/Users/pankaj/tmp/destChannel.avi");
start = System.nanoTime();
copyFileUsingChannel(source, dest);
System.out.println("Time taken by Channel Copy = "+(System.nanoTime()-start));
//copy files using apache commons io
source = new File("/Users/pankaj/tmp/sourceApache.avi");
dest = new File("/Users/pankaj/tmp/destApache.avi");
start = System.nanoTime();
copyFileUsingApacheCommonsIO(source, dest);
System.out.println("Time taken by Apache Commons IO Copy = "+(System.nanoTime()-start));
//using Java 7 Files class
source = new File("/Users/pankaj/tmp/sourceJava7.avi");
dest = new File("/Users/pankaj/tmp/destJava7.avi");
start = System.nanoTime();
copyFileUsingJava7Files(source, dest);
System.out.println("Time taken by Java7 Files Copy = "+(System.nanoTime()-start));
РЕЗУЛЬТАТЫ:
/*
* File copy:
* Time taken by Stream Copy = 44582575000
* Time taken by Channel Copy = 104138195000
* Time taken by Apache Commons IO Copy = 108396714000
* Time taken by Java7 Files Copy = 89061578000
*/
Ссылка:
http://www.journaldev.com/861/4-ways-to-copy-file-in-java
Начните с [Basic I/O] (http://docs.oracle.com/javase/tutorial/essential/io/), а также попытаться иметь взгляд на [ Копирование файла или каталога] (http://docs.oracle.com/javase/tutorial/essential/io/copy.html) – MadProgrammer
Моя первая проблема заключается в том, как хранить эти файлы поиска? – vijayk
Я не уверен, почему вам нужно, однако, взглянуть на [Коллекции] (http://docs.oracle.com/javase/tutorial/collections/TOC.html), я бы сосредоточился где-нибудь вокруг «Список ' – MadProgrammer