0

: ここでは、「純粋な JRE」ソリューションのみに関心があります。つまり、JRE に同梱されている (そして、おそらくjava.ioパッケージ内に存在する) タイプを含むソリューションです。Apache Commons などは、単一のメソッド呼び出しからこれをうまく行うユーティリティ クラスを提供していると確信していますが、ここでは純粋な JRE が必要です。

次のランタイム ディレクトリ構造があります。

MyProject/
    fizz.txt
    src/
        com/
            myorg/
                Driver

MyDriverはエントリ ポイント (静的mainメソッドを含む) であり、実際には、プロジェクトの残りのビルド/デプロイなどとは別に、コマンド ラインから呼び出します。

java com.myorg.Driver -url blah.example.com

の中Driverで、私はそれを読んfizz.txtで何かをする必要があります。注:何があっても、常に 3 つの親ディレクトリの上にfizz.txt配置さます。Driver

内部Driverには次のコードがあります。

File fizz = new File("../../../fizz.txt");
System.out.println("fizz = " + fizz.getAbsolutePath());

を実行するDriverと、次の例外が発生します。

Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: ../../../fizz.txt not found.
    at com.myorg.Driver(Driver.java:76)
    at com.myorg.Driver.main(Driver.java:45)
fizz = /home/myuser/relay/workbench/eclipse-juno/workspace/MyProject/../../../

Java は..、関係 " parent-of " として " " の概念を尊重していないようです。だから私は尋ねます:どのようにファイルAPI(再び、純粋なJRE)を使用してアクセスfizz.txtDriverますか?前もって感謝します!

4

2 に答える 2

0

File参照は、クラスではなく、Java の実行時点からコンテキストに依存します...

Javaに関する限り、実行コンテキストは になりますMyProject。つまり、new File("fizz.txt")代わりに使用してみてください

于 2013-09-20T09:39:21.753 に答える
0

Java、関係「親」として「..」の概念を尊重しています。問題は、クラスが配置されているディレクトリではなく、現在の作業ディレクトリを参照として使用していることです。

ファイルをクラス ツリーと一緒に配置する場合は、getClass().getResourceAsStream("file name")メソッドを呼び出してファイルにアクセスすることを検討してください。そうすれば、コードは現在の作業ディレクトリに依存しなくなります。

于 2013-09-20T09:44:27.287 に答える