0

次のプログラムと、プロジェクトの src フォルダーに保存されているファイル「euler8.txt」がありますC:\Users\john\workspace\Euler1\src\euler8.txt。実行しようとすると例外が発生Exception in thread "main" java.io.FileNotFoundException: euler8.txt (The system cannot find the file specified)します。

private static void euler8() throws IOException
{   
    int current;
    int largest=0;
    int c =0;
    ArrayList<Integer> bar = new ArrayList<Integer>(0);
    File infile = new File("C:/Users/xxxxxxxx/workspace/Euler1/euler8.txt");
    BufferedReader reader = new BufferedReader(
            new InputStreamReader(
            new FileInputStream(infile),
            Charset.forName("UTF-8")));
    try
    {
        while((c = reader.read()) != -1) 
        {
            bar.add(c);
        }
    }
    finally{reader.close();}
    for(int i=0; i<bar.size(); i++)
    {
        current = bar.get(i) * bar.get(i+1) * bar.get(i+2) * bar.get(i+3) * bar.get(i+4);
        if(largest<current)
            largest = current;
    }
}

私が今見ているものの画像 http://img163.imageshack.us/img163/7017/halpbk.png

4

5 に答える 5

1

3 つのソリューション。いずれかを選択:

1: src から euler.txt を 1 つ上のディレクトリに移動します
2: 行を次のように変更します

File infile = new File("./src/euler8.txt");

3: 絶対パスを使用する

String path  = "C:/Users/john/workspace/Euler1/src/";
String file = "euler8.txt";
File infile = new File(path + file);
于 2012-12-19T18:52:11.893 に答える
1

テキスト ファイルをsrcフォルダーから移動して、プロジェクト フォルダーの直下に配置する必要があります。


または、現在の場所のパスを次のように変更します。 -

File infile = new File("./src/euler8.txt");

指定したパスはルート フォルダーからの相対パスであるため、指定した場合はファイルを見つけることができません"euler8.txt"。フォルダーに移動するには、プロジェクト フォルダーからの相対パスを指定する必要がありsrcます。

を指定することもできabsolute pathますが、プロジェクトを別の場所に移動するたびにパスを変更する必要があるため、これは適切な方法ではありません。

于 2012-12-19T18:50:30.487 に答える
1

この行は、ルート フォルダー内のテキスト ファイルを探します。

       File infile = new File("euler8.txt");

このような絶対パスを指定する必要があります

      File infile = new File("C:/Users/john/workspace/Euler1/src/euler8.txt");

またはjLordoが提案したように、ファイルをルートフォルダーに移動します

于 2012-12-19T18:51:32.060 に答える
0

これを試して

  InputStream inputStream = getClass().getResourceAsStream("euler8.txt");
        String sa = "";
        int cc;
        while((cc = inputStream.read()) != -1) {
            sa += (char) cc;
        }

euler8.txt が src フォルダーにあると仮定します

于 2012-12-19T18:53:18.487 に答える
0

指摘したように、現在の作業ディレクトリは、src ディレクトリではなく、プログラムが起動されたディレクトリです。現在の作業ディレクトリはいつでも見つけることができます

String workingDir = new java.io.File( "." ).getCanonicalPath();
于 2012-12-19T18:56:25.420 に答える