0

ユーザーに特定のディレクトリを選択するように求めるプログラムを作成しました。それが完了すると、プログラムはそのフォルダー内の各ファイルを選択し、それらの個々のファイルに対して他のコード (この質問には関係ありません) を実行する必要があります。

私の問題は、ファイルが try/catch IO Exception に巻き込まれ続け、その理由が分からないことです。

以下は私のファイルチューザコードと出力です。

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\\C0048817_PCF_Front"));
    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 folderFile = inFileName.getSelectedFile();
    File[] listOfFiles = folderFile.listFiles();
    for (int i = 0; i < listOfFiles.length; i++) {
        File file = listOfFiles[i];
        if (file.isFile() && file.getName().endsWith(".pcf")) {
         cf.HexFinder(folderFile, null, null, null);
        }else {
          System.out.println("Incorrect filetype:\n" + file.getName() + "\n");
        }
    }
}
}

出力:

run:
IO Exception: Could not read file!

Incorrect filetype:
TSG_C7D4_KOI_BT_MAX_EOL.pcf.xml

IO Exception: Could not read file!

Incorrect filetype:
TSG_C7D4_KOI_BT_MAX_PLUS_EOL.pcf.xml

IO Exception: Could not read file!

BUILD SUCCESSFUL (total time: 2 seconds)

Incorrect filetypeの出力は (私がテストしていたフォルダーに対して) 正しいですが、IOExceptions は正しくありません。私のコードは各ファイルで個別に機能することを知っています。

EDIT コードは、try/catch 内で Buffered Reader を使用する別のクラスを呼び出します。この BufferedReader が try/catch の外にある場合、次のエラーが発生します。

run:
Exception in thread "main" java.io.FileNotFoundException: C:\Documents and Settings\lucey01\Desktop\Projects\C0048817\KOI\C0048817_PCF_Front (Access is denied)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileReader.<init>(FileReader.java:72)
at robertskostalproject.checksumFinder.HexFinder(checksumFinder.java:24)
at robertskostalproject.checksumGUI.askDirectory(checksumGUI.java:47)
at robertskostalproject.RobertsKostalProject.main(RobertsKostalProject.java:14)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)

誰が私が間違っているかを見ることができますか? いつものように、どんな助けも大歓迎です。

4

2 に答える 2

0

ファイル名と拡張子の問題を探します。ご覧のとおり、ファイル名と拡張子に問題があります

TSG_C7D4_KOI_BT_MAX_EOL.pcf**.xml**

.PCF ではなく .XML としてファイルを読み取っています。

于 2013-09-09T15:07:09.173 に答える