0

我创建了一个程序来将图像从一台设备上传到另一台设备。就目前而言,该程序只允许用户一次上传一个文件。如果我想编辑程序以允许用户一次上传多个文件,那么最好的方法是什么。

String source1 = source.getSelectedFile().getPath();
System.out.println("Source1: " + source1);
String nwdir1 = nwdir.getSelectedFile().getPath() + "\\" + filename;
System.out.println("nwdir1: " + nwdir1);

Path source = Paths.get(source1);
Path nwdir = Paths.get(nwdir1);

try {
    Files.copy(source, nwdir);

我注意到您可以执行 .getSelectedFiles(),但由于这不允许 .getPath(),我不确定如何继续。假设你可以这样做:

File[] source1 = source.getSelectedFiles();

我将如何去做第二行:

String nwdir1 = nwdir.getSelectedFile().getPath() + "\\" + filename;

当我用 File 数组(如上所示)替换该行时,我在行上得到一个错误:

Path source = Paths.get(source1);
Path nwdir = Paths.get(nwdir1);
4

2 回答 2

2

File.listFilesFile.listFiles(FileFilter)

多文件选择

抱歉,这就是我认为您想要的,但是您正在使用JFileChooser来选择目录,所以我假设您想要列出目录:P

使用setMultiSelectionEnabeld设置JFileChooser允许多项选择。您可能希望将文件选择模式设置为,或者如果您仍然希望他们能够选择目录。JFileChooser.FILES_ONLYJFileChooser.FILES_AND_DIRECTORIES

您可能还希望设置文件过滤器以允许对话框过滤目录内容,限制用户可以选择的内容,为简单起见,请查看FileNameExtensionFilter

更新

JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
FileNameExtensionFilter filter = new FileNameExtensionFilter("Images", "png", "jpg", "jpeg");
chooser.setFileFilter(filter);

switch (chooser.showOpenDialog(null)) {

    case JFileChooser.APPROVE_OPTION:

        String currentPath = chooser.getCurrentDirectory().getPath();
        File[] files = chooser.getSelectedFiles();

        if (files.length > 0) {

            System.out.println("You have choosen " + files.length + " from " + currentPath);

        } else {

            System.out.println("You didn't selected anything");

        }

        break;

}
于 2012-08-13T19:29:30.320 回答
1

使用 apache 公共库中的 FileUtils。非常强大和有用。您甚至可以指定要复制的文件格式等。

于 2012-08-13T18:18:24.203 回答