我创建了一个程序,用于将图像从一个设备上传到另一个设备。目前,该程序仅允许用户一次上传一个文件。如果我想编辑程序以允许用户一次上传多个文件,那么最好的方法是什么。
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);
答案 0 :(得分:2)
File.listFiles或File.listFiles(FileFilter)
多文件选择
很抱歉,这就是我认为你想要的,但你正在使用JFileChooser
来选择一个目录,所以我假设你要做一个目录列表:P
设置JFileChooser
以允许使用setMultiSelectionEnabeld进行多项选择。如果您仍希望他们能够选择目录,您可能希望将文件选择模式设置为JFileChooser.FILES_ONLY
或JFileChooser.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;
}
答案 1 :(得分:1)
使用apache commons库中的FileUtils。非常强大和有用。您甚至可以指定要复制的文件格式等。