среда, 1 августа 2012 г.

io: file


    Лабораторные

    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
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;
    }



    io.file.copy_dir
    Данный код создает копию структуры папок
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));
            }
        }
    }
}
    Модифицируйте/допишите код, что бы он создавал не только копию папок, но и копии всех файлов.