Skip to content

Instantly share code, notes, and snippets.

@OlgaKulikova
Last active August 29, 2015 14:08
Show Gist options
  • Save OlgaKulikova/5e955632e88e24b7af9d to your computer and use it in GitHub Desktop.
Save OlgaKulikova/5e955632e88e24b7af9d to your computer and use it in GitHub Desktop.
Копирование файлов (InputStream, OutputStream)
package copyFiles;
// Написать программу для копирования всех файлов из одного каталога в другой.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws Exception {
ArrayList<String> list = new ArrayList<>();
String dirSrc = "D:\\dir\\", dirDest = "D:\\dir\\files\\";
finedFiles(dirSrc, list);
// Проходим по списку имен файлов, создаем файлы с такими же именами в нужном каталоге, копируем содержимое в одноименных файлах
for (String s : list) {
File file = new File(dirDest, s); // Создаем пустые файлы в каталоге назначения и с именами по списку файлов-источников
String fileSrc = dirSrc + s; // Полный путь файла-источника
String fileDest = dirDest + s; // Полный путь файла назначения
copyFiles(fileSrc, fileDest);
}
}
// Находим все файлы в указанном каталоге
public static void finedFiles(String dirSrc, ArrayList<String> list) throws Exception {
File dir = new File(dirSrc);
File[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i] != null && files[i].isFile()) { // Проверяем, ячейка массива файлов не пустая и она является файлом
list.add(files[i].getName()); // Добавляем в список имена всех файлов из данного каталога
}
}
}
// Копируем содержимое файла из файла-источника в файл назначения
public static void copyFiles(String fileSrc, String fileDest) throws Exception {
FileInputStream in = new FileInputStream(fileSrc);
try {
FileOutputStream out = new FileOutputStream(fileDest);
try {
byte[] buf = new byte[1024];
int r;
do {
r = in.read(buf, 0, buf.length);
if (r > 0) {
out.write(buf, 0, r);
}
} while (r > 0);
} finally {
out.close();
}
} finally {
in.close();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment