3

開いている RandomAccessFile インスタンスからファイル名を取得するにはどうすればよいですか?

ファイル自体に関連する次のメソッドのみを見つけることができます。

  • getFD(): FileDescriptor オブジェクトを返します
  • getChannel(): FileChannel オブジェクトを返します

File クラスのインスタンスを取得するか、RandomAccessFile のコンストラクターに渡すファイル名文字列を直接取得したいと思います。

RandomAccessFile(File file, String mode) 

ありがとう!

4

1 に答える 1

2

あなたの検討/投票の答えとして、私のコメント(上記)を追加しています(私は評判が欲しいです!)

RandomAccessFile の使用は、実装の詳細として認識されるべきです。コードに渡さないでください。以前は RAF に依存していたものを別のもの (リモート システムなど) で動作させたいとすぐに思うかもしれません。あなたがしていることからビジネスロジック/動作を取り出し、それをインターフェースに入れます。そのインターフェイスを、File と RandomAcecssFile をメンバー変数として格納するクラスに実装します。これにより、常に両方にアクセスできます。File がコンストラクターのパラメーターとして受け取る URI を使用することもできます。これは非常にオープンで合理的なことです。インターフェース Foo がある場合は、次のようになります。

interface Foo {
    public URI getUri();

    public void doSomething();

    public Bar doSomethingElse();
}

次のものを使用できます。

class FileBasedFoo implements Foo {
    private File file;
    private RandomAccessFile raf;

    // ... your impl here
}

Foo を使用したコード内のどこでも、透過的に切り替えることができます。

class RpcFoo implements Foo {
    // ... some SOAPy implementation here
}

class RestFoo implements Foo {
    // ... you get the idea
}
于 2011-11-22T02:07:09.697 に答える