繁体   English   中英

用Java打开RandomAccessFile是什么意思?

[英]What does it mean to open a RandomAccessFile in Java?

RandomAccessFile具有close()方法,其内容如下:

关闭此随机访问文件流,并释放与此流关联的所有系统资源。

打开RandomAccessFile是什么意思? 我问是因为没有open()方法。 当我们执行诸如读写之类的任务时,打开RandomAccessFile是否只是隐式的? 为什么没有open()方法? 仅打开RandomAccessFile而不同时执行任何其他任务是否有意义?

如Java doc中所述,该文件是使用构造函数https://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html创建的

RandomAccessFile(File file,String mode)创建一个随机访问文件流,以读取和可选地写入File参数指定的文件。

RandomAccessFile(String name,String mode)创建一个随机访问文件流,以读取具有指定名称的文件,也可以选择写入该文件。

确切地说:

创建一个随机访问文件流,以读取具有指定名称的文件,也可以选择写入该文件。 创建一个新的FileDescriptor对象来表示与文件的连接。 mode参数指定用于打开文件的访问模式。 允许的值及其含义与为RandomAccessFile(File,String)构造函数指定的值相同。

如果存在安全管理器,则使用name参数作为其参数来调用其checkRead方法,以查看是否允许对该文件进行读取访问。 如果该模式允许写入,则还使用name参数作为其参数调用安全管理器的checkWrite方法,以查看是否允许对该文件进行写访问。

由于Java中没有显式的析构函数(据我所知),一旦创建RandomAccessFile,就需要显式关闭文件。

当您创建RandomAccessFile对象的新实例时,就像隐式调用open方法一样。
在创建对象的过程中,还将创建一个新的FileDescriptor对象,以表示与文件的连接。

我建议使用try-with-resources语句创建此对象,因为RandomAccessFile实现接口java.lang.AutoCloseable

try (RandomAccessFile stmt = new RandomAccessFile("file.txt", "rw")) {
  // your code
} catch (IOException e) {
  // Exception handling
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM