0

特定の場所からファイルを読み取る Java アプリケーションを作成しています。ファイルの場所は、取得したフォルダーにあります

getCanonicalPath(). 

私が直面している問題は、Eclipse でアプリケーションを実行しているときに、正規のパスが Java 博士が見るパスと異なることです。では、アプリケーションをクライアントに配信する前に、どの ide/コマンド プロンプトを使用してアプリケーションを実行してもファイルが確実に認識されるようにするにはどうすればよいでしょうか。getCanonicalPath のさまざまな可能性をカバーするために、考えられるすべてのフォルダーに同じファイルをコピーすることは明らかに良い考えではありません。

ありがとう

4

3 に答える 3

1

解決策の 1 つは、このファイルをクラスパスに配置し、次のようなコードを使用してクラスパスからロードすることです。

URL url = getClass().getClassLoader().getResource(path);
        if(url != null) {
            try {
                return new File(url.toURI().getPath());
            } catch (URISyntaxException e) {
                return null;
            }
        }

このファイルが構成ファイルの場合、これは標準です。通常、標準の Java プロジェクト レイアウトでは、これをフォルダーに配置しますsrc/main/resources

これがデータ ファイルに近い場合は、構成ファイルにそのパスを入力し、異なる構成 (1 つはステーション用、もう 1 つはクライアント マシン上での運用用) にする必要があります。もちろん、この場合、構成ファイルはクラスパスにあります;)。

于 2012-08-29T12:14:13.187 に答える
0

ClassLoader常に、のようなAPIを使用してファイルをロードする必要があります 。詳細については、こちらをご覧Test.class.getClassLoader().getResource(name)くださいTest.class.getClassLoader().getResourceAsStream(name)

于 2012-08-29T12:16:40.750 に答える
0

一般的な解決策は、クラス パスにあるディレクトリにファイルを配置することです。getResource または getResourceAsInputStream を使用すると、クラスパスのどこにファイルが提供されているかに関係なく、ファイルを見つけることができます。Maven を使用すると、使用する IDE に関係なく、クラスパスがどのように設定されているかを確認できます。

于 2012-08-29T12:15:12.573 に答える