Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将图片从目录和子目录复制到另一个目录?_Java - Fatal编程技术网

Java 如何将图片从目录和子目录复制到另一个目录?

Java 如何将图片从目录和子目录复制到另一个目录?,java,Java,如何将我写入控制台的目录和子目录中的图片复制到另一个目录中 我无法从控制台获取目录 此代码有效,但当我更改 private File[] images = new File("C:/Users/Public/Pictures/Sample Pictures"+"/").listFiles() 与 它不起作用 public class Copy { private String path; private File[] images = new File("C:/Users/P

如何将我写入控制台的目录和子目录中的图片复制到另一个目录中

我无法从控制台获取目录

此代码有效,但当我更改

private File[] images = new File("C:/Users/Public/Pictures/Sample Pictures"+"/").listFiles() 

它不起作用

public class Copy {
    private String path;
    private File[] images = new File("C:/Users/Public/Pictures/Sample Pictures"
            + "/").listFiles();

    private Copy() throws IOException {
        getPath();
        finder();
    }

    public static void main(String[] args) throws IOException {
        Copy copy = new Copy();
    }

    private void getPath() {
        System.out.print("Enter directory: ");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        try {
            path = br.readLine();
        } catch (IOException ioe) {
            System.out.println("IO error trying to read your name!");
            System.exit(1);
        }
    }

    private void finder() throws IOException {
        System.out.println("" + path);
        for (File f : images) {

            if (f.isDirectory()) {
                File[] nextimages = new File(
                        "C:/Users/Public/Pictures/Sample Pictures" + "/"
                                + f.getName()).listFiles();
                for (File z : nextimages) {
                    System.out.println("Processing: " + z.getName() + "...");
                    if (z.isHidden()) {
                        System.out.println("Skipping, file is hidden...");
                        continue;
                    }
                    process(z);
                }
                continue;
            }

            if (f.isHidden()) {
                System.out.println("Skipping, file is hidden...");
                continue;
            }
            process(f);

        }
    }

    private void process(File file) throws IOException {
        BufferedImage image = ImageIO.read(file);
        saveThumbnail(file, image);
    }

    private void saveThumbnail(File originalFile, BufferedImage thumbnail)
            throws IOException {
        String filename = originalFile.getName();
        String fileExt = filename.substring(filename.lastIndexOf('.') + 1);
        ImageIO.write(thumbnail, fileExt, new File("D:/Stahovanie/Zadanie/"
                + filename));
    }
}
你有

private String path;
private File[] images = new File("C:/Users/Public/Pictures/Sample Pictures"+"/").listFiles();
因此,在开始时,
路径
null
。现在您需要知道字段是在构造函数编码之前初始化的,所以如果将
images
更改为

new File(path+"/").listFiles();
这与将其更改为相同

new File(null+"/").listFiles();
所以它会产生

new File("null/").listFiles();

要解决该问题,请尝试调用

images = new File(path+"/").listFiles();

path
将被设置为正确的值时,那么可能在
getPath
方法之后。

它是如何工作的?你期望它做什么,它会做什么?既然变量
f
,为子目录创建一个新文件有什么意义?您是否尝试使用system.println(path)查看您得到了什么?如何从控制台获取输入?检查路径值buddythanks其工作情况…您能帮助查找器()吗问题…当目录有子目录,而这个目录又有另一个子目录时,它就坏了…我如何解决这个问题???@D3laru3解决子目录问题可能会改变
finder
一点。尝试添加参数,如
finder(文件目录)
。现在,当您迭代
listFiles
并查找子目录时,请为该子目录调用另一个
finder
images = new File(path+"/").listFiles();