1

テキストファイルを使用するプログラムを作成しています。jarファイルを使用して別のコンピューターからプログラムを実行できるようにする必要があります。問題は、テキスト ファイルへの正しいファイル パスを見つけることができないことです。を使用してみましgetResource()たが、まだ正しく動作していません。コードは次のとおりです。

public class Params {

    public static void init() {

        hsChartSuited = new int[13][13];

        file = new File(Params.class.getResource("HandStrengthDataSuited.txt").getFile());

        try {
            Scanner input = new Scanner(file);
            for (int i = 0; i < hsChartSuited.length; i++) {
                for (int j = 0; j < hsChartSuited[i].length; j++) {
                    hsChartSuited[i][j] = Integer.parseInt(input.next()) - 20;
                }
            }
        } catch (FileNotFoundException e) {
            System.out.println("File not found");

        }
}

HandStrengthDataSuited.txt私のプロジェクトの src フォルダーにあるファイルです。また、フォルダーの外、プロジェクトのメイン ディレクトリにもあります。私は絶対ファイルパスを印刷しようとしましたが、これは私が得たものです:

/Users/MyUsername/file:/Users/MyUsername/Documents/Homework_Soph_2012/Computer%20Science/HoldEm/dist/HoldEm.jar!/holdem/HandStrengthDataSuited.txt

取得する必要があるファイルパスは

/Users/MyUsername/Documents/Homework_Soph_2012/Computer%20Science/HoldEm/holdem/HandStrengthDataSuited.txt

ここで何が問題なのか誰か知っていますか?

4

1 に答える 1

0

ファイルが src フォルダーにある場合、

class Tools {
    public static InputStream getResourceAsStream(String resource)
        throws FileNotFoundException
         {
        String stripped = resource.startsWith("/") ? resource.substring(1) : resource;
        InputStream stream = null;
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        if (classLoader != null) {
          stream = classLoader.getResourceAsStream(stripped);
        }
        if (stream == null) {
          stream = Tools.class.getResourceAsStream(resource);
        }
        if (stream == null) {
          stream = Tools.class.getClassLoader().getResourceAsStream(stripped);
        }
        if (stream == null) {
          throw new FileNotFoundException("Resource not found: " + resource);
        }
        return stream;
    }
}

使用する:

reader = new BufferedReader(new InputStreamReader(getResourceAsStream("org/paulvargas/resources/file.txt"), "UTF-8"));
于 2012-04-29T21:27:48.697 に答える