0

我已经编写了代码来打开和读取(特定文件类型的)单个文件,但现在需要做同样的事情,只需要一个充满这些文件的文件夹。我发现了这个问题,但我不知道如何根据需要更改它。

这是我当前的代码。

    JFileChooser inFileName = new JFileChooser(new 
    File("C:\\Documents and Settings\\lucey01\\Desktop\\Projects\\C0048817\\KOI\\C0048817_PCF_Front"));       
    \\This is the default folder

    FileNameExtensionFilter filter = new FileNameExtensionFilter("PCF & TXT Files", "pcf", "txt");
    inFileName.setFileFilter(filter);
    
    Component parent = null;
    
    do {
      returnVal1 = inFileName.showOpenDialog(parent);
      if (returnVal1 == JFileChooser.CANCEL_OPTION) {
          returnVal2 = JOptionPane.showConfirmDialog(null, "Select YES to cancel. Select NO to restart",
          "Are you sure?", JOptionPane.YES_NO_OPTION);
          if (returnVal2 == JOptionPane.YES_OPTION) {
            System.exit(returnVal2);
            }else{
             checksumGUI.this.askDirectory();
           }
      }
   } while (returnVal1 == JOptionPane.CANCEL_OPTION);
     cf.HexFinder(inFileName,null,null,null);

编辑所以我的问题是:我可以向此代码添加/更改任何(小)东西以使其适用于文件夹中特定类型的多个文件吗?

非常感谢任何帮助,谢谢。

4

2 回答 2

0

终于得到了这个答案。我的问题是我需要把它放在一个单独的方法上。

这里发生的是选择了一个文件夹而不是一个单独的文件。代码遍历该文件夹中的每个文件。以 .pcf 结尾的文件是唯一调用下一个类来读取该文件的文件

这就是缺少的东西;

...
//Insert right after the JFilechoser is created
inFileName2.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
...
public void multiFile(JFileChooser inFileName) throws FileNotFoundException, IOException {

    checksumFinder cf = new checksumFinder(this);//Calls the class to read the file

     File[] listAllFiles = inFileName.getSelectedFile().listFiles

    for (int i = 0; i < listAllFiles.length; i++) {

        File currentFile = listAllFiles[i];

        if (currentFile.isFile() && currentFile.getName().endsWith(".pcf")) {
            cf.hexFinder(currentFile, null, null, null);
        } 
     }
于 2013-09-19T10:54:13.867 回答
0

好的,这是我的 SSCCE。我发现的一些代码来自这里,非常有用。这段代码将编译,似乎没有问题。但是经过一点调试我仍然不知道为什么它不起作用

package robertskostalproject;

import java.awt.Component;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;

public class checksumGUI {

 private checksumFinder cf = new checksumFinder();
 private static int returnVal1;
 private static int returnVal2;

public void askDirectory() throws FileNotFoundException, UnsupportedEncodingException, IOException {

    JFileChooser inFileName = new JFileChooser(new File("C:\\Documents and Settings\\lucey01\\Desktop\\Projects\\C0048817\\KOI"));
    inFileName.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

    Component parent = null;

    do {

     returnVal1 = inFileName.showOpenDialog(parent);
     if (returnVal1 == JFileChooser.CANCEL_OPTION) {
        returnVal2 = JOptionPane.showConfirmDialog(null, "Select YES to cancel. Select NO to restart",
        "Are you sure?", JOptionPane.YES_NO_OPTION);
          if (returnVal2 == JOptionPane.YES_OPTION) {
             System.exit(returnVal2);
          } else {
            checksumGUI.this.askDirectory();
         }
      }

    } while (returnVal1 == JOptionPane.CANCEL_OPTION);

  File folder = inFileName.getSelectedFile();
  File[] listOfFiles = folder.listFiles();

 for (int i = 0; i < listOfFiles.length; i++) {
   File file = listOfFiles[i];
   if (file.isFile() && file.getName().endsWith(".txt") || file.getName().endsWith(".pcf")) {
     cf.HexFinder(inFileName, null, null, null);
   }else {
    System.out.println("File was not of correct type");
   }
  }
 }
}
于 2013-09-06T12:00:37.350 回答