【问题标题】:Perform the action on all the files in directory对目录中的所有文件执行操作
【发布时间】:2015-02-01 22:07:24
【问题描述】:

现在我正在选择一个文件,它运行良好。

        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setCurrentDirectory(new File(System
                .getProperty("user.home") + "/Desktop"));
        int result = fileChooser.showOpenDialog(fileChooser);
        if (result == JFileChooser.APPROVE_OPTION) {
            selectedFile = fileChooser.getSelectedFile();
        }
        BufferedReader reader = new BufferedReader(new FileReader(
                selectedFile.getAbsolutePath()));

它可以帮助我对所选文件执行读写操作。

但我想添加功能,以便我选择文件夹并对其中存在的所有文件执行读写操作,或者如果我在文件夹内切换,我可以选择一个我需要执行操作的文件

我试过了

    chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new java.io.File("."));
    chooser.setDialogTitle(choosertitle);
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

但它不起作用。

请帮忙

【问题讨论】:

  • 定义“但它不起作用。”
  • 它可以帮助我选择该文件夹,如果我打印相同...它会给我文件夹的名称。但我想选择该文件夹中的所有文件。
  • 那么,像File#listFiles 这样的东西呢?

标签: java file file-io file-handling


【解决方案1】:

JFileChooser 将返回您选择的File,这将是用户选择的文件夹,您需要使用File#listFiles 之类的东西,它将返回所选文件夹中所有Files 的数组。

这样,您就可以循环数组并处理单个文件...

chooser = new JFileChooser(); 
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle(choosertitle);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

int result = fileChooser.showOpenDialog(fileChooser);
if (result == JFileChooser.APPROVE_OPTION) {

    File folder = fileChooser.getSelectedFile();
    File[] listOfFiles = folder.listFiles();
    for (File file : listOfFiles) {
        // Process the file...
    }

【讨论】:

  • 它将适用于给定文件夹中的所有文件。但是在这里我需要如果用户选择一个文件夹然后它对其中的所有文件执行操作。如果用户想在该文件夹中选择一个文件,他应该能够做到这一点。
  • 那么不要使用DIRECTORIES_ONLY...使用JFileChooser.FILES_AND_DIRECTORIES。您将需要检查结果选择的File 以查看它是isFile 还是isDirectory 并采取适当的措施。有关详细信息,请参阅How to Use File Choosers...
猜你喜欢
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 2012-05-18
相关资源
最近更新 更多