Most visited

Recently visited

Added in API level 1

RandomAccessFile

public class RandomAccessFile
extends Object implements DataOutput, DataInput, Closeable

java.lang.Object
   ↳ java.io.RandomAccessFile


此类的实例支持读取和写入随机访问文件。 随机访问文件的行为与存储在文件系统中的大量字节相同。 有一种游标或指向隐含数组的索引,称为文件指针 ; 输入操作从文件指针开始读取字节,并使文件指针超过读取的字节。 如果随机访问文件是以读/写模式创建的,则输出操作也可用; 输出操作从文件指针开始写入字节,并使文件指针超过写入的字节。 写入隐含数组的当前末尾的输出操作会导致数组扩展。 文件指针可以通过读取getFilePointer方法和由设置seek方法。

在这个类中的所有阅读例程中,如果在读取所需的字节数之前达到文件结束,则会EOFException (这是一种IOException )。 如果由于除文件结束之外的任何原因而无法读取任何字节,则会抛出除EOFException IOException其他EOFException 特别是,如果流已关闭, IOException可能会抛出IOException

Summary

Public constructors

RandomAccessFile(String name, String mode)

创建一个随机访问文件流,以便从指定名称的文件中读取文件并可选择写入该文件。

RandomAccessFile(File file, String mode)

创建一个随机访问文件流以读取和写入由 File参数指定的文件。

Public methods

void close()

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

final FileChannel getChannel()

返回与此文件关联的唯一 FileChannel对象。

final FileDescriptor getFD()

返回与此流关联的不透明文件描述符对象。

long getFilePointer()

返回此文件中的当前偏移量。

long length()

返回此文件的长度。

int read()

从该文件读取一个字节的数据。

int read(byte[] b)

最多可将 b.length个字节的数据从此文件读取到一个字节数组中。

int read(byte[] b, int off, int len)

从该文件读取多达 len个字节的数据到字节数组中。

final boolean readBoolean()

从此文件读取 boolean

final byte readByte()

从该文件读取一个有符号的八位值。

final char readChar()

从该文件读取一个字符。

final double readDouble()

从该文件读取 double

final float readFloat()

从此文件读取 float

final void readFully(byte[] b)

从该文件读取 b.length字节到当前文件指针开始的字节数组中。

final void readFully(byte[] b, int off, int len)

从当前文件指针开始,从该文件中正好读取 len字节到字节数组中。

final int readInt()

从该文件读取一个有符号的32位整数。

final String readLine()

从该文件读取下一行文本。

final long readLong()

从该文件读取一个有符号的64位整数。

final short readShort()

从该文件读取一个有符号的16位数字。

final String readUTF()

从该文件读取一个字符串。

final int readUnsignedByte()

从该文件读取一个无符号的八位数字。

final int readUnsignedShort()

从该文件读取一个无符号的16位数字。

void seek(long offset)

设置文件指针偏移量,从该文件的开始处开始测量,下一次读取或写入发生。

void setLength(long newLength)

设置此文件的长度。

int skipBytes(int n)

尝试跳过 n字节的输入,丢弃跳过的字节。

void write(byte[] b)

b.length字节从指定的字节数组写入此文件,从当前文件指针开始。

void write(byte[] b, int off, int len)

len字节从指定的字节数组开始,从偏移量 off开始写入此文件。

void write(int b)

将指定的字节写入此文件。

final void writeBoolean(boolean v)

将一个 boolean作为一个字节值写入文件。

final void writeByte(int v)

byte作为单字节值写入文件。

final void writeBytes(String s)

将字符串作为字节序列写入文件。

final void writeChar(int v)

将一个 char作为一个双字节值写入文件,先写入高字节。

final void writeChars(String s)

将字符串作为字符序列写入文件。

final void writeDouble(double v)

使用类 DoubledoubleToLongBits方法将双 long参数转换为 Double ,然后将该 long值作为八字节数量写入文件,高字节在前。

final void writeFloat(float v)

浮子参数的转换 int使用 floatToIntBits方法在类 Float ,然后写入该 int值到该文件作为一个四字节数量,高字节。

final void writeInt(int v)

写入 int作为四个字节的文件,先写入高字节。

final void writeLong(long v)

写入一个 long作为八个字节的文件,高字节在前。

final void writeShort(int v)

将两个字节(高字节在前)写入 short作为文件。

final void writeUTF(String str)

以与机器无关的方式使用 modified UTF-8编码将一个字符串写入文件。

Protected methods

void finalize()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。

Inherited methods

From class java.lang.Object
From interface java.io.DataOutput
From interface java.io.DataInput
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Public constructors

RandomAccessFile

Added in API level 1
RandomAccessFile (String name, 
                String mode)

创建一个随机访问文件流,以便从指定名称的文件中读取文件并可选择写入该文件。 将创建一个新的FileDescriptor对象以表示与该文件的连接。

mode参数指定要打开文件的访问模式。 允许的值及其含义与构造函数RandomAccessFile(File,String)规定相同

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

Parameters
name String: the system-dependent filename
mode String: the access mode
Throws
IllegalArgumentException if the mode argument is not equal to one of "r", "rw", "rws", or "rwd"
FileNotFoundException if the mode is "r" but the given string does not denote an existing regular file, or if the mode begins with "rw" but the given string does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file
SecurityException if a security manager exists and its checkRead method denies read access to the file or the mode is "rw" and the security manager's checkWrite method denies write access to the file

也可以看看:

RandomAccessFile

Added in API level 1
RandomAccessFile (File file, 
                String mode)

创建一个随机访问文件流,以便从File参数指定的文件中进行读取和写入(可选)。 将创建一个新的FileDescriptor对象来表示此文件连接。

The mode argument specifies the access mode in which the file is to be opened. The permitted values and their meanings are:

含义

"r" Open for reading only. Invoking any of the write methods of the resulting object will cause an IOException to be thrown.
"rw" Open for reading and writing. If the file does not already exist then an attempt will be made to create it.
"rws" Open for reading and writing, as with "rw", and also require that every update to the file's content or metadata be written synchronously to the underlying storage device.
"rwd"   Open for reading and writing, as with "rw", and also require that every update to the file's content be written synchronously to the underlying storage device.
The "rws" and "rwd" modes work much like the force(boolean) method of the FileChannel class, passing arguments of true and false, respectively, except that they always apply to every I/O operation and are therefore often more efficient. If the file resides on a local storage device then when an invocation of a method of this class returns it is guaranteed that all changes made to the file by that invocation will have been written to that device. This is useful for ensuring that critical information is not lost in the event of a system crash. If the file does not reside on a local device then no such guarantee is made.

"rwd"模式可用于减少执行的I / O操作的数量。 使用"rwd"只需要更新要写入存储的文件内容; 使用"rws"需要更新文件内容及其要写入的元数据,这通常需要至少一个低级I / O操作。

如果有安全管理器,则使用file参数的路径名作为其参数来调用其checkRead方法,以查看是否允许对该文件进行读取访问。 如果模式允许写入,则安全管理器的checkWrite方法也会使用path参数调用,以查看是否允许对该文件进行写入访问。

Parameters
file File: the file object
mode String: the access mode, as described above
Throws
IllegalArgumentException if the mode argument is not equal to one of "r", "rw", "rws", or "rwd"
FileNotFoundException if the mode is "r" but the given file object does not denote an existing regular file, or if the mode begins with "rw" but the given file object does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file
SecurityException if a security manager exists and its checkRead method denies read access to the file or the mode is "rw" and the security manager's checkWrite method denies write access to the file

也可以看看:

Public methods

close

Added in API level 1
void close ()

关闭此随机访问文件流并释放与该流关联的所有系统资源。 封闭的随机访问文件不能执行输入或输出操作,也不能重新打开。

如果此文件具有关联的频道,则该频道也会关闭。

Throws
IOException if an I/O error occurs.

getChannel

Added in API level 1
FileChannel getChannel ()

返回与此文件关联的唯一 FileChannel对象。

返回通道的 position将始终等于getFilePointer方法返回的此对象的文件指针偏移量。 改变这个对象的文件指针偏移量,无论是明确的还是通过读取或写入字节,都会改变通道的位置,反之亦然。 通过此对象更改文件的长度将改变通过文件通道看到的长度,反之亦然。

Returns
FileChannel the file channel associated with this file

getFD

Added in API level 1
FileDescriptor getFD ()

返回与此流关联的不透明文件描述符对象。

Returns
FileDescriptor the file descriptor object associated with this stream.
Throws
IOException if an I/O error occurs.

也可以看看:

getFilePointer

Added in API level 1
long getFilePointer ()

返回此文件中的当前偏移量。

Returns
long the offset from the beginning of the file, in bytes, at which the next read or write occurs.
Throws
IOException if an I/O error occurs.

length

Added in API level 1
long length ()

返回此文件的长度。

Returns
long the length of this file, measured in bytes.
Throws
IOException if an I/O error occurs.

read

Added in API level 1
int read ()

从该文件读取一个字节的数据。 该字节以整数形式返回,范围为0到255( 0x00-0x0ff )。 如果没有输入可用,此方法会阻止。

尽管 RandomAccessFile不是 RandomAccessFile的子类, InputStream此方法的行为方式与 read()方法 InputStream

Returns
int the next byte of data, or -1 if the end of the file has been reached.
Throws
IOException if an I/O error occurs. Not thrown if end-of-file has been reached.

read

Added in API level 1
int read (byte[] b)

从该文件读取多达b.length个字节的数据到一个字节数组中。 此方法阻塞,直到至少有一个输入字节可用。

尽管 RandomAccessFile不是 RandomAccessFile的子类, InputStream此方法的行为方式与 read(byte[])方法 InputStream

Parameters
b byte: the buffer into which the data is read.
Returns
int the total number of bytes read into the buffer, or -1 if there is no more data because the end of this file has been reached.
Throws
IOException If the first byte cannot be read for any reason other than end of file, or if the random access file has been closed, or if some other I/O error occurs.
NullPointerException If b is null.

read

Added in API level 1
int read (byte[] b, 
                int off, 
                int len)

从该文件读取最多len个字节的数据到字节数组中。 此方法阻塞,直到至少有一个输入字节可用。

尽管 RandomAccessFile不是 RandomAccessFile的子类, InputStream此方法的行为方式与 read(byte[], int, int)方法 InputStream

Parameters
b byte: the buffer into which the data is read.
off int: the start offset in array b at which the data is written.
len int: the maximum number of bytes read.
Returns
int the total number of bytes read into the buffer, or -1 if there is no more data because the end of the file has been reached.
Throws
IOException If the first byte cannot be read for any reason other than end of file, or if the random access file has been closed, or if some other I/O error occurs.
NullPointerException If b is null.
IndexOutOfBoundsException If off is negative, len is negative, or len is greater than b.length - off

readBoolean

Added in API level 1
boolean readBoolean ()

从此文件读取boolean 该方法从当前文件指针处开始从文件读取单个字节。 值为0表示false 任何其他值代表true 此方法阻塞,直到读取字节,检测到流的结束,或抛出异常。

Returns
boolean the boolean value read.
Throws
EOFException if this file has reached the end.
IOException if an I/O error occurs.

readByte

Added in API level 1
byte readByte ()

从该文件读取一个有符号的八位值。 该方法从当前文件指针开始从文件读取一个字节。 如果读取的字节是b ,那么0 <= b <= 255 ,那么结果是:

     (byte)(b)
 

此方法阻塞,直到读取字节,检测到流的结束,或抛出异常。

Returns
byte the next byte of this file as a signed eight-bit byte.
Throws
EOFException if this file has reached the end.
IOException if an I/O error occurs.

readChar

Added in API level 1
char readChar ()

从该文件读取一个字符。 该方法从文件中读取两个字节,从当前文件指针开始。 如果依次读取的字节数为b1b2 ,其中0 <= b1, b2 <= 255 ,则结果等于:

     (char)((b1 << 8) | b2)
 

此方法阻塞,直到读取两个字节,检测到流的结尾或引发异常。

Returns
char the next two bytes of this file, interpreted as a char.
Throws
EOFException if this file reaches the end before reading two bytes.
IOException if an I/O error occurs.

readDouble

Added in API level 1
double readDouble ()

从该文件读取double 此方法读取一个long值,并从当前文件指针,就好像由readLong方法,然后转换该longdouble使用longBitsToDouble在类方法Double

该方法阻塞直到读取了八个字节,检测到流的结束,或者引发异常。

Returns
double the next eight bytes of this file, interpreted as a double.
Throws
EOFException if this file reaches the end before reading eight bytes.
IOException if an I/O error occurs.

也可以看看:

readFloat

Added in API level 1
float readFloat ()

从此文件读取float 此方法读取一个int值,并从当前文件指针,就好像由readInt方法,然后转换该intfloat使用intBitsToFloat在类方法Float

此方法阻塞,直到读取四个字节,检测到流的结束,或抛出异常。

Returns
float the next four bytes of this file, interpreted as a float.
Throws
EOFException if this file reaches the end before reading four bytes.
IOException if an I/O error occurs.

也可以看看:

readFully

Added in API level 1
void readFully (byte[] b)

从该文件读取b.length个字节到字节数组中,从当前文件指针开始。 该方法从文件中重复读取,直到读取请求的字节数。 此方法阻塞,直到读取所请求的字节数,检测到流的结尾或抛出异常。

Parameters
b byte: the buffer into which the data is read.
Throws
EOFException if this file reaches the end before reading all the bytes.
IOException if an I/O error occurs.

readFully

Added in API level 1
void readFully (byte[] b, 
                int off, 
                int len)

从当前文件指针开始,从该文件中正好读取len个字节到字节数组中。 该方法从文件中重复读取,直到读取请求的字节数。 此方法阻塞,直到读取所请求的字节数,检测到流的结尾或抛出异常。

Parameters
b byte: the buffer into which the data is read.
off int: the start offset of the data.
len int: the number of bytes to read.
Throws
EOFException if this file reaches the end before reading all the bytes.
IOException if an I/O error occurs.

readInt

Added in API level 1
int readInt ()

从该文件读取一个有符号的32位整数。 该方法从文件读取4个字节,从当前文件指针开始。 如果读取的字节依次是b1b2b3 ,和b4 ,其中0 <= b1, b2, b3, b4 <= 255 ,则结果等于:

     (b1 << 24) | (b2 << 16) + (b3 << 8) + b4
 

此方法阻塞,直到读取四个字节,检测到流的结束,或抛出异常。

Returns
int the next four bytes of this file, interpreted as an int.
Throws
EOFException if this file reaches the end before reading four bytes.
IOException if an I/O error occurs.

readLine

Added in API level 1
String readLine ()

从该文件读取下一行文本。 此方法从文件中连续读取文件中的字节,从当前文件指针开始,直到达到行终止符或文件末尾。 通过取字符的低8位的字节值并将字符的高8位设置为零来将每个字节转换为字符。 因此,此方法不支持完整的Unicode字符集。

一行文本由一个回车符( '\r' ),一个换行符( '\n' ),一个紧接着换行符的回车符或文件末尾结束。 行终止字符被丢弃,不作为返回字符串的一部分包含在内。

此方法阻塞,直到读取换行符,回车并读取其后的字节(以查看它是否为换行符),到达文件末尾或引发异常。

Returns
String the next line of text from this file, or null if end of file is encountered before even one byte is read.
Throws
IOException if an I/O error occurs.

readLong

Added in API level 1
long readLong ()

从该文件读取一个有符号的64位整数。 该方法从文件中读取八个字节,从当前文件指针开始。 如果读取的字节依次是b1b2b3b4b5b6b7 ,并b8,其中:

     0 <= b1, b2, b3, b4, b5, b6, b7, b8 <=255,
 

那么结果等于:

     ((long)b1 << 56) + ((long)b2 << 48)
     + ((long)b3 << 40) + ((long)b4 << 32)
     + ((long)b5 << 24) + ((long)b6 << 16)
     + ((long)b7 << 8) + b8
 

该方法阻塞直到读取了八个字节,检测到流的结束,或者引发异常。

Returns
long the next eight bytes of this file, interpreted as a long.
Throws
EOFException if this file reaches the end before reading eight bytes.
IOException if an I/O error occurs.

readShort

Added in API level 1
short readShort ()

从该文件读取一个有符号的16位数字。 该方法从该文件中读取两个字节,从当前文件指针开始。 如果两个字节的顺序是b1b2 ,其中两个值中的每一个都在0255之间(包括0255 ),则结果等于:

     (short)((b1 << 8) | b2)
 

此方法阻塞,直到读取两个字节,检测到流的结尾或引发异常。

Returns
short the next two bytes of this file, interpreted as a signed 16-bit number.
Throws
EOFException if this file reaches the end before reading two bytes.
IOException if an I/O error occurs.

readUTF

Added in API level 1
String readUTF ()

从该文件读取一个字符串。 该字符串已使用modified UTF-8格式进行编码。

读取前两个字节,从当前文件指针开始,就像readUnsignedShort 该值给出了编码字符串中后续字节的数量,而不是结果字符串的长度。 接下来的字节将被解释为字节编码UTF-8格式的字符并转换为字符。

此方法阻塞直到读取所有字节,检测到流结束或抛出异常。

Returns
String a Unicode string.
Throws
EOFException if this file reaches the end before reading all the bytes.
IOException if an I/O error occurs.
UTFDataFormatException if the bytes do not represent valid modified UTF-8 encoding of a Unicode string.

也可以看看:

readUnsignedByte

Added in API level 1
int readUnsignedByte ()

从该文件读取一个无符号的八位数字。 该方法从该文件中读取一个字节,从当前文件指针开始,然后返回该字节。

此方法阻塞,直到读取字节,检测到流的结束,或抛出异常。

Returns
int the next byte of this file, interpreted as an unsigned eight-bit number.
Throws
EOFException if this file has reached the end.
IOException if an I/O error occurs.

readUnsignedShort

Added in API level 1
int readUnsignedShort ()

从该文件读取一个无符号的16位数字。 该方法从文件中读取两个字节,从当前文件指针开始。 如果按顺序读取的字节数分别为b1b2 ,其中0 <= b1, b2 <= 255 ,则结果等于:

     (b1 << 8) | b2
 

此方法阻塞,直到读取两个字节,检测到流的结尾或引发异常。

Returns
int the next two bytes of this file, interpreted as an unsigned 16-bit integer.
Throws
EOFException if this file reaches the end before reading two bytes.
IOException if an I/O error occurs.

seek

Added in API level 1
void seek (long offset)

设置文件指针偏移量,从该文件的开始处开始测量,下一次读取或写入发生。 偏移量可以设置在文件末尾以外。 设置超出文件末尾的偏移量不会改变文件长度。 文件长度只有在文件末尾设置了偏移量后才会改变。

Parameters
offset long: the offset position, measured in bytes from the beginning of the file, at which to set the file pointer.
Throws
IOException if pos is less than 0 or if an I/O error occurs.

setLength

Added in API level 1
void setLength (long newLength)

设置此文件的长度。

如果length方法返回的文件当前长度大于newLength参数,则该文件将被截断。 在这种情况下,如果getFilePointer方法返回的文件偏移量大于newLength则在此方法返回后,偏移量将等于newLength

如果length方法返回的文件的当前长度小于newLength参数,则文件将被扩展。 在这种情况下,文件扩展部分的内容未定义。

Parameters
newLength long: The desired length of the file
Throws
IOException If an I/O error occurs

skipBytes

Added in API level 1
int skipBytes (int n)

尝试跳过 n个字节的输入,丢弃跳过的字节。

该方法可能跳过一些较小的字节数,可能为零。 这可能是由于任何一种情况造成的。 n字节被跳过之前达到文件n只是一种可能性。 该方法从不抛出EOFException 返回跳过的实际字节数。 如果n为负数,则不跳过字节。

Parameters
n int: the number of bytes to be skipped.
Returns
int the actual number of bytes skipped.
Throws
IOException if an I/O error occurs.

write

Added in API level 1
void write (byte[] b)

b.length字节从指定的字节数组写入此文件,从当前文件指针开始。

Parameters
b byte: the data.
Throws
IOException if an I/O error occurs.

write

Added in API level 1
void write (byte[] b, 
                int off, 
                int len)

将从指定字节数组开始的 len个字节写入此文件,偏移量从 off开始。

Parameters
b byte: the data.
off int: the start offset in the data.
len int: the number of bytes to write.
Throws
IOException if an I/O error occurs.

write

Added in API level 1
void write (int b)

将指定的字节写入此文件。 写入从当前文件指针开始。

Parameters
b int: the byte to be written.
Throws
IOException if an I/O error occurs.

writeBoolean

Added in API level 1
void writeBoolean (boolean v)

boolean作为单字节值写入文件。 价值true被写出价值(byte)1 ; false被写为值(byte)0 写入从文件指针的当前位置开始。

Parameters
v boolean: a boolean value to be written.
Throws
IOException if an I/O error occurs.

writeByte

Added in API level 1
void writeByte (int v)

byte作为单字节值写入文件。 写入从文件指针的当前位置开始。

Parameters
v int: a byte value to be written.
Throws
IOException if an I/O error occurs.

writeBytes

Added in API level 1
void writeBytes (String s)

将字符串作为字节序列写入文件。 字符串中的每个字符通过丢弃其高八位而依次写出。 写入从文件指针的当前位置开始。

Parameters
s String: a string of bytes to be written.
Throws
IOException if an I/O error occurs.

writeChar

Added in API level 1
void writeChar (int v)

将一个char作为一个双字节值写入文件,先写入高字节。 写入从文件指针的当前位置开始。

Parameters
v int: a char value to be written.
Throws
IOException if an I/O error occurs.

writeChars

Added in API level 1
void writeChars (String s)

将字符串作为字符序列写入文件。 每个字符都写入数据输出流,就像通过writeChar方法一样。 写入从文件指针的当前位置开始。

Parameters
s String: a String value to be written.
Throws
IOException if an I/O error occurs.

也可以看看:

writeDouble

Added in API level 1
void writeDouble (double v)

使用doubleToLongBits类中的doubleToLongBits方法将双long参数转换为Double ,然后将该long值作为八字节数量写入文件,高字节在前。 写入从文件指针的当前位置开始。

Parameters
v double: a double value to be written.
Throws
IOException if an I/O error occurs.

也可以看看:

writeFloat

Added in API level 1
void writeFloat (float v)

浮子参数的转换int使用floatToIntBits方法在类Float ,然后写入该int值到该文件作为一个四字节数量,高字节。 写入从文件指针的当前位置开始。

Parameters
v float: a float value to be written.
Throws
IOException if an I/O error occurs.

也可以看看:

writeInt

Added in API level 1
void writeInt (int v)

写入一个int作为四个字节的文件,高字节在前。 写入从文件指针的当前位置开始。

Parameters
v int: an int to be written.
Throws
IOException if an I/O error occurs.

writeLong

Added in API level 1
void writeLong (long v)

写入long作为八个字节的文件,首先是高字节。 写入从文件指针的当前位置开始。

Parameters
v long: a long to be written.
Throws
IOException if an I/O error occurs.

writeShort

Added in API level 1
void writeShort (int v)

将两个字节写入文件short先写入高字节。 写入从文件指针的当前位置开始。

Parameters
v int: a short to be written.
Throws
IOException if an I/O error occurs.

writeUTF

Added in API level 1
void writeUTF (String str)

以与机器无关的方式使用 modified UTF-8编码将一个字符串写入文件。

首先,从当前文件指针开始,将两个字节写入文件,就像通过writeShort方法给出要跟随的字节数一样。 该值是实际写出的字节数,而不是字符串的长度。 在长度之后,字符串的每个字符按顺序输出,每个字符使用修改后的UTF-8编码。

Parameters
str String: a string to be written.
Throws
IOException if an I/O error occurs.

Protected methods

finalize

Added in API level 1
void finalize ()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize方法以处置系统资源或执行其他清理。

的常规协定finalize是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize方法可以采取任何行动,包括使该对象再次可用于其他线程; 然而, finalize的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。

Objectfinalize方法Object执行特殊操作; 它只是正常返回。 Object子类可能会覆盖此定义。

Java编程语言不保证哪个线程将为任何给定对象调用finalize方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。

在为一个对象调用了 finalize方法之后,在Java虚拟机再次确定没有任何方法可以通过任何尚未死亡的线程访问该对象之前,不会采取进一步的操作,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。

对于任何给定的对象,Java虚拟机永远不会多次调用 finalize方法。

finalize方法引发的任何异常 finalize导致终止此对象的终止,但会被忽略。

Throws
Throwable

Hooray!