在Java中打开RandomAccessFile意味着什么?

时间:2017-03-20 21:32:55

标签: java randomaccessfile

RandomAccessFile有一个close()方法,其描述如下:

  

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

打开RandomAccessFile是什么意思?我问,因为没有open()方法。当我们执行读写等任务时,是否隐藏了一个RandomAccessFile?为什么没有open()方法?仅在不同时执行任何其他任务的情况下打开RandomAccessFile是否有意义?

2 个答案:

答案 0 :(得分:1)

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

  

RandomAccessFile(文件文件,字符串模式)创建随机访问文件   要从中指定的文件读取和可选地写入的流   File参数。

     

RandomAccessFile(String name,String mode)创建随机访问   文件流,用于从中读取文件,并可选择写入文件   指定名称。

确切地说:

  

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

     

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

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

答案 1 :(得分:1)

当您创建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
}