2012-08-12 135 views

回答

28

你可以有你JFileChooser选择多个文件,并返回文件对象的数组,而不是一个

JFileChooser chooser = new JFileChooser(); 
chooser.setMultiSelectionEnabled(true); 
chooser.showOpenDialog(frame); 
File[] files = chooser.getSelectedFiles(); 

的方法showOpenDialog(frame)一旦你点击确定按钮

编辑

只返回

所以做到这一点:

JFileChooser chooser = new JFileChooser(); 
chooser.setMultiSelectionEnabled(true); 
chooser.showOpenDialog(frame); 
File[] files = chooser.getSelectedFiles(); 
if(files.length >= 2) { 
    compare(readFileAsList(files[0]), readFileAsList(files[1])); 
} 

,改变你的readFileAsList到:

private static List<String> readFileAsList(File file) throws IOException { 
    final List<String> ret = new ArrayList<String>(); 
    final BufferedReader br = new BufferedReader(new FileReader(file)); 
    try { 
     String strLine; 
     while ((strLine = br.readLine()) != null) { 
      ret.add(strLine); 
     } 
     return ret; 
    } finally { 
     br.close(); 
    } 
} 
+0

什么你从文件选择得到的是文件的数组。你可以使用compare(readFileAsList(files [0]),readFileAsList(files [1]))来访问它们。但你需要改变readFileAsList接受文件而不是字符串 – 2012-08-12 13:09:29

+0

我该怎么做? – zenx 2012-08-12 13:10:57

+0

http://docs.oracle.com/cd/E26232_01/doc.11122/easjavaapi/com/essbase/eas/utils/TextFile.html#readFileAsList_java_io_File__java_lang_String_ 如果您使用的是Java内置方法,则不需要做任何事情,因为它已经接受的文件对象 但它真的很难帮你没有看到你当前的代码 – 2012-08-12 13:13:46

10

您可以使用:

JFileChooser chooser = new JFileChooser(); 
chooser.setMultiSelectionEnabled(true); 

// Show the dialog; wait until dialog is closed 
chooser.showOpenDialog(frame); 

// Retrieve the selected files. 
File[] files = chooser.getSelectedFiles(); 

然后,您可以使用的文件句柄返回给做比较。

+0

正确的地方,谢谢。 – 2013-04-15 15:22:41

2

在我来说,我解决了它宣告帧设置为null一个初始化的局部变量:

JFileChooser chooser = new JFileChooser(); 
chooser.setMultiSelectionEnabled(true); 

Component frame = null; 

chooser.showOpenDialog(frame); 
File[] files = chooser.getSelectedFiles();