0

私は、ファイルを読み取り、そこから各単語を配列に入れるプログラムをJavaで作成しているので、デフォルトの配列に並べ替えた後、各単語のアナグラムを作成できます。.txtファイルが読み取られていないことを除いて、これを行う方法については良い考えがあります。srcに「anagram.java」プログラムを含む「input.txt」というファイルがありますが、ファイルエントリのコードが表示されると、ファイル名「input.txt」を入力すると、コードにファイルが表示されます。存在せず、私はこれを取得します:

Enter file name: 
input.txt
Exception in thread "main" java.io.FileNotFoundException: input.txt (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:120)
        at java.io.FileInputStream.<init>(FileInputStream.java:79)
        at java.io.FileReader.<init>(FileReader.java:41)
        at anagram.main(anagram.java:23)
Java Result: 1
BUILD SUCCESSFUL (total time: 6 seconds)

がめちゃくちゃになっている行のコードは次のとおりです。

    public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter file name: ");
    String fileName = br.readLine();
    File file = new File(fileName);
    if(file.length() == 0)
    {
        System.out.println("File is empty");
        System.exit(1);
    }

どうやら「input.txt」と入力するだけでは十分な情報などではないようですが、よくわかりません。削除しました

    if(file.length() == 0)
    {
        System.out.println("File is empty");
        System.exit(1);
    }

上記のエラーを取得するために、anagram.javaprgmを使用してsrc内のファイルを認識していなかったことがわかりました。

私のコードの何が問題になっていますか?ファイルを読み取っていない、またはファイルがないと言っているのはなぜですか?

4

2 に答える 2

22

私はあえてファイルがsrcディレクトリにあると言いますが、それはプログラムの現在の作業ディレクトリではないと思います。これを確認するには、次のコードを実行します。

System.out.println(new File(".").getAbsolutePath());

オプション:

  • 絶対ファイル名を指定してください
  • これを実行している場所を考慮した相対ファイル名を指定します
  • ファイルをリソースとしてバンドルし、Class.getResourceAsStreamまたは同様のものを使用する

これは何の関係もないことに注意してくださいBufferedReader-あなたはSystem.in問題なくからテキストを読んでいます。

于 2013-03-12T17:32:14.630 に答える
1

ソースディレクトリとは異なるパスを探しています。次のようなフルパスを指定してみてくださいc:\input.txt(ただし、ファイルをそこに移動することを忘れないでください!)。

于 2013-03-12T17:32:09.720 に答える