5

NFS ファイルシステムの Linux 環境で実行する Java アプリケーションを作成しようとしています。

を呼び出すと、 (Stale NFS file handle) と(No such file or directory)java.io.File.exists()の両方に対して false が返されることに気付きました。私のアプリケーションでは、この 2 つを区別できる必要があります。ESTALEENOENT

現在stat()、JNAを使用して呼び出しを実装することを検討していますが、統計構造全体と__xstat64プラットフォームに依存しているように見えるすべてのものを実装する必要があるため、それはやり過ぎのようです。

errnoこの問題を解決するための Java 呼び出しFile.exists()やその他のアイデアの後に、基礎となるものを簡単に取得する簡単な方法はありますか?

4

2 に答える 2

2

statJNA では、実際に構造を実装する必要はありません。ネイティブ構造を表すのに十分な大きさのメモリを割り当てるだけです。

その後、呼び出して値Native.getLastError()を取得できerrnoます。

Pointer fake_stat = new Memory(2048); // big enough
if (clib.stat(filename, fake_stat) != 0) {
    int errno = Native.getLastError();
    ...
}
于 2013-05-30T14:59:35.913 に答える