如何从已打开的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的事物能够与其他东西一起工作 - 也许是远程系统。将业务逻辑/行为从您正在进行的操作中取出,并将其放入接口中。在存储文件和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
}