0

これを実行することで...

File file = new File("Highscores.scr");

このエラーが何度も発生しますが、回避する方法が本当にわかりません。ファイルは現在、.java ファイルと共にソース パッケージに格納されています。パスを指定することでファイルを簡単に読み取ることができますが、これを複数のコンピューターで実行するつもりなので、プログラムでファイルを移植できる必要があります。この質問は、テキスト ファイルを読み取ることではなく、絶対パスを使用せずにその場所を指定することに関するものです。答えを探しましたが、得られる答えは「名前を指定してください」と「絶対パスを指定してください」だけです。より明確にするために画像を投稿しますが、そうする10人の担当者がいません:/どうすればこれを行うことができますか?

乾杯。

4

4 に答える 4

1

これを行う最善の方法は、それをクラスパスに入れてからgetResource()にすることです

package com.sandbox;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;

public class Sandbox {

    public static void main(String[] args) throws URISyntaxException, IOException {
        new Sandbox().run();
    }

    private void run() throws URISyntaxException, IOException {
        URL resource = Sandbox.class.getResource("/my.txt");
        File file = new File(resource.toURI());
        String s = FileUtils.readFileToString(file);
        System.out.println(s);
    }


}

が必要だと想定しているため、これを行っていますFile。ただし、代わりに を使用する API がある場合は、InputStream代わりに使用することをお勧めしますgetResourceAsStream

パスに注意してください/my.txt。つまり、「クラスパスのルート ディレクトリにある my.txt という名前のファイルを取得する」ということです。getResourceこれを行う方法についてもっと読んで、もっとgetResourceAsStream学ぶことができると確信しています。ただし、ここで重要なことは、ファイルのクラスパスは、実行可能ファイルを提供するどのコンピューターでも同じになるということです(クラスパス内でファイルを移動しない限り)。

ところで、次の行で null ポインタ例外が発生したnew File場合は、ファイルの正しいクラスパスを指定していないことを意味します。

于 2013-06-03T07:25:04.437 に答える
0

私が覚えている限り、デフォルトのディレクトリはプロジェクトフォルダーレベルと同じです。ファイルを 1 つ上のレベルに置きます。

-Project/
 ----src/
 ----test/
-Highscores.scr
于 2013-06-03T07:24:14.573 に答える
0

Eclipse でコードをビルドしている場合はHighscores.scr、プロジェクト フォルダーに配置する必要があります。それを試して確認してください。

于 2013-06-03T07:24:30.823 に答える
0

次のサンプル プログラムを実行して、プログラムが選択している現在のディレクトリを確認できます。

File f = new File(".");
System.out.println("Current Directory is: " + f.getAbsolutePath());
于 2013-06-03T07:26:24.517 に答える