Java:从打开的RandomAccessFile实例获取文件名

时间:2011-11-21 17:34:07

标签: java filenames file-descriptor random-access filechannel

如何从打开的RandomAccessFile实例中获取文件名?

我只能找到与文件本身相关的以下方法:

  • getFD():返回FileDescriptor对象
  • getChannel():返回FileChannel对象

我想获取一个File类实例,或者直接获取我传递给RandomAccessFile构造函数的文件名字符串:

RandomAccessFile(File file, String mode) 

谢谢!

1 个答案:

答案 0 :(得分:2)

我正在添加我的评论(上图)作为您考虑/投票的答案(我想要声誉!)

应将RandomAccessFile的使用视为实现细节。不要在代码中传递它。你可能很快就会发现你想要以前依赖于RAF的东西与其他东西一起工作 - 也许是一个远程系统。从您正在做的事情中获取业务逻辑/行为并将其放入界面中。在将File和RandomAcecssFile存储为成员变量的类中实现该接口。这可确保您始终可以访问这两者。您甚至可以使用URI - 哪个File作为构造函数参数。这是一个非常开放和合理的事情 - 所以如果你有一个界面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
}