Лабораторные
io.file.look_for_new_big_image
Этот пример кода - проходит по всей директории (включая вложенные) и выводит имена всех файлов в консольimport java.io.File;
public class FileLab_LookFor {
public static void main(String[] args) {
File file = new File("d:/tmp");
print(file);
}
public static void print(File root) {
if (root.isFile()) {
System.out.println(root);
} else {
File[] fileArray = root.listFiles();
for (File file : fileArray) {
print(file);
}
}
}
}
Модифицируйте/допишите его, что бы он
1) Собирал только имена файлов, которые представляют собой большие (File.length() > 1024*1024) картинки (имя файла заканчивается (String.endsWith(String)) на ".jpg"/".png"/".bmp"/".gif".
2) Собирал массив файлов, а не выводил в консоль.
3) Для реализации пункта 1 рекомендуется (но не обязательно) использовать FileFilter
3) Для реализации пункта 1 рекомендуется (но не обязательно) использовать FileFilter
public class FileLab_LookFor {
public static void main(String[] args) {
File[] bigImages = lookForBigImage(new File("d:/tmp"));
}
public static File[] lookForBigImage(File root) {...}
}
Вам может помочь метод
public static File[] concatenate(File[] file0, File[] file1) {
File[] result = new File[file0.length + file1.length];
System.arraycopy(file0, 0, result, 0, file0.length);
System.arraycopy(file1, 0, result, file0.length, file1.length);
return result;
}
Данный код создает копию структуры папок
import java.io.File;
public class FileLab_CopyDir {
public static void main(String[] args) {
copy(new File("d:/tmp"), new File("d:/tmp2"));
}
private static void copy(File src, File dst) {
if (src.isDirectory()) {
if (!dst.exists()) {
dst.mkdir();
}
for (File srcSubDir : src.listFiles()) {
String subDirName = srcSubDir.getName();
copy(srcSubDir, new File(dst, subDirName));
}
}
}
}
Модифицируйте/допишите код, что бы он создавал не только копию папок, но и копии всех файлов.