0

私はJavaにかなり慣れていないので、LINUXパスで指定されたファイルが存在するかどうかを調べようとしています。

private void validateFilePath(String filePath) {

        File dir = new File(filePath);

        if(dir.exists()){
                System.out.println("File exists in the path " + dir);
                setTARGET_IMG_DIR("filePath");
                return; 
        }else{
            System.out.println("File does not exists in the path: " + dir);
            return;
        }

    }

このようにルートから絶対パスを指定すると、dir.existsは正常に機能します

/Users/yv/Documents/Eclipse-workspace/InputParser/bin/test.txt

しかし、のような相対パスを指定した場合、 test.txtまたは/InputParser/bin/test.txtファイルが存在しないと表示された場合。

私はこのプロジェクトのjarを作成することを計画しているので、これは相対パス(同じディレクトリ内のファイル)とルートからの絶対パスの両方で機能するはずです。どうすればこれを処理できますか?

ルートからそのファイルの絶対パスを検索し、それをファイル名に追加することは可能ですか?

4

3 に答える 3

1

Eclipseプログラムが実行されている現在のディレクトリがにあるディレクトリではないためと思われますtest.txt。また、/InputParser/bin/test.txtは絶対パスでありInputParser/bin/test.txt、、./InputParser/bin/test.txtまたはは相対パスであることに注意してください。パスの詳細については、ウィキペディアを参照してください(Unixライクを参照)。

ここで、eclipseがプログラムを実行するディレクトリを見つけるために、追加することをお勧めします。

System.out.println(System.getProperty("user.dir"));

-あなたのプログラムで、Alexが指摘したように-

編集:現在のディレクトリを取得するようにコマンドを変更しました

于 2012-10-08T21:35:18.567 に答える
1

プロジェクトのルートディレクトリをクラスパスに追加し、を使用Class.getResource()して存在を確認しClass.getResourceAsStream()、ファイルの内容を読み取ります。これは、ファイルがファイルシステムにあるかjarにあるかにかかわらず同じように機能します。

于 2012-10-08T21:40:00.187 に答える
1

user.dirEclipseは通常、実行のベースディレクトリであるプロジェクトディレクトリをとして設定して実行されます。したがって、絶対パスが次の場合:

/Users/yv/Documents/Eclipse-workspace/InputParser/bin/test.txt

その場合、相対パスは次のようになります。

bin/test.txt

user.dirJavaのシステムプロパティからプロパティを取得することで、作業ディレクトリを再確認できます。Javaのシステムプロパティの詳細については、ドキュメントを確認してください

于 2012-10-08T21:44:32.657 に答える