RandomAccessFile有一个close()方法,其描述如下:
关闭此随机访问文件流并释放与该流关联的所有系统资源。
打开RandomAccessFile是什么意思?我问,因为没有open()方法。当我们执行读写等任务时,是否隐藏了一个RandomAccessFile?为什么没有open()方法?仅在不同时执行任何其他任务的情况下打开RandomAccessFile是否有意义?
答案 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
}