如何从打开的 RandomAccessFile 实例中获取文件名?
我只能找到与文件本身相关的以下方法:
getFD()
: 返回一个 FileDescriptor 对象getChannel()
: 返回一个 FileChannel 对象
我想获取一个 File 类实例,或者直接获取我传递给 RandomAccessFile 的构造函数的文件名字符串:
RandomAccessFile(File file, String mode)
谢谢!
如何从打开的 RandomAccessFile 实例中获取文件名?
我只能找到与文件本身相关的以下方法:
getFD()
: 返回一个 FileDescriptor 对象getChannel()
: 返回一个 FileChannel 对象我想获取一个 File 类实例,或者直接获取我传递给 RandomAccessFile 的构造函数的文件名字符串:
RandomAccessFile(File file, String mode)
谢谢!
我正在添加我的评论(上图)作为您考虑/投票的答案(我想要声誉!)
RandomAccessFile 的使用应被视为实现细节。不要在你的代码周围传递它。您可能很快就会发现您希望以前依赖于 RAF 的东西与其他东西一起工作——也许是远程系统。从您正在做的事情中取出业务逻辑/行为并将其放入界面中。在将 File 和 RandomAecssFile 存储为成员变量的类中实现该接口。这可确保您始终可以访问两者。您甚至可以使用 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
}