优惠码 第23页

BufferedReader java.lang.Object |—java.io.Reader |—|—java.io.BufferedReader public class BufferedReader extends Reader 从字符输入流中读取文本,缓冲字符,以便高效读取字符、数组和行。 可以指定缓冲区大小,也可以使用默认大小。 对于大多数用途,默认值足够大。 通常,由 Reader 发出的每个读取请求都会导致对底层字符或字节流发出相应的读取请求。 因此,建议将 BufferedReader 包装在 read() 操作可能成本高昂的任何 Reader 周围,例如 FileReaders 和 InputStreamReaders。 例如, BufferedReader in = new BufferedReader(new FileReader("foo.in")); 将缓冲来自指定文件的输入。 如果没有缓冲,每次调用 read() 或 readLine() 都可能导致从文件中读取字节,转换为字符,然后返回,这可能非常低效。 使用 DataInputStreams 进行文本输入的程序可以通过将每个 DataInputStream 替换为适当的 BufferedReader 来本地化。 Since: JDK1.1 字段摘要 从类 java.io.Reader 继承的字段 lock 构造函数摘要 构造函数 描述 BufferedReader(Reader in) 创建一个使用默认大小的输入缓冲区的缓冲字符输入流。 BufferedReader(Reader in, int sz) 创建一个使用指定大小的输入缓冲区的缓冲字符输入流。 方法总结 修饰符和类型 方法 描述 void close() 关闭流并释放与其关联的任何系统资源。 StreamString lines() 返回一个 Stream,其元素是从此 BufferedReader 读取的行。 void mark(int readAheadLimit) 标记流中的当前位置。 boolean markSupported() 告诉这个流是否支持 mark() 操作,它支持。 int read() 读取单个字符。 int read(char[] cbuf, int off, int len) 将字符读入数组的一部分。 String readLine() 读取一行文本。 boolean ready() 告诉这个流是否准备好被读取。 void reset() 将流重置为最新标记。 long skip(long n) 跳过字符。 从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 从类 java.io.Reader 继承的方法 read, read 构造函数详细信息 BufferedReader public BufferedReader(Reader in, int sz) 创建一个使用指定大小的输入缓冲区的缓冲字符输入流。 参数: 参数名称 参数描述 in 输入流 sz 输入缓冲区大小 Throws: Throw名称 Throw描述 IllegalArgumentException...

BufferedOutputStream java.lang.Object |—java.io.OutputStream |—|—java.io.FilterOutputStream |—|—|—java.io.BufferedOutputStream public class BufferedOutputStream extends FilterOutputStream 该类实现了一个缓冲的输出流。 通过设置这样的输出流,应用程序可以将字节写入底层输出流,而不必为每个写入的字节调用底层系统。 Since: JDK1.0 字段摘要 修饰符和类型 字段 描述 protected byte[] buf 存储数据的内部缓冲区。 protected int count 缓冲区中的有效字节数。 从类 java.io.FilterOutputStream 继承的字段 out 构造函数摘要 构造函数 描述 BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流以将数据写入指定的基础输出流。 BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将数据写入具有指定缓冲区大小的指定基础输出流。 方法总结 修饰符和类型 方法 描述 void flush() 刷新此缓冲输出流。 void write(byte[] b, int off, int len) 从偏移量 off 开始的指定字节数组中写入 len 个字节到此缓冲输出流。 void write(int b) 将指定字节写入此缓冲输出流。 从类 java.io.FilterOutputStream 继承的方法 close, write 从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 字段详细信息 buf protected byte[] buf 存储数据的内部缓冲区。 count protected int count 缓冲区中的有效字节数。 该值始终在 0 到 buf.length 的范围内; 元素 buf[0] 到 buf[count-1] 包含有效的字节数据。 构造函数详细信息 BufferedOutputStream public BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流以将数据写入指定的基础输出流。 参数: 参数名称 参数描述 out 底层输出流。 BufferedOutputStream public BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将数据写入具有指定缓冲区大小的指定基础输出流。 参数: 参数名称 参数描述 out 底层输出流。 size 缓冲区大小。 Throws: Throw名称 Throw描述 IllegalArgumentException 如果 size <= 0. 方法详情 write public void write(int b) throws IOException 将指定字节写入此缓冲输出流。 覆盖: 写在类 FilterOutputStream 参数:...

BufferedInputStream java.lang.Object |—java.io.InputStream |—|—java.io.FilterInputStream |—|—|—java.io.BufferedInputStream public class BufferedInputStream extends FilterInputStream BufferedInputStream 向另一个输入流添加了功能,即缓冲输入并支持标记和重置方法的能力。 创建 BufferedInputStream 时,会创建一个内部缓冲区数组。 当流中的字节被读取或跳过时,内部缓冲区会根据需要从包含的输入流中重新填充,一次很多字节。 标记操作会记住输入流中的一个点,并且重置操作会导致在从包含的输入流中获取新字节之前重新读取自最近一次标记操作以来读取的所有字节。 Since: JDK1.0 字段摘要 修饰符和类型 字段 描述 protected byte[] buf 存储数据的内部缓冲区数组。 protected int count 比缓冲区中最后一个有效字节的索引大一的索引。 protected int marklimit 在随后调用 reset 方法失败之前调用 mark 方法后允许的最大预读。 protected int markpos 调用最后一个标记方法时 pos 字段的值。 protected int pos 缓冲区中的当前位置。 从类 java.io.FilterInputStream 继承的字段 in 构造函数摘要 构造函数 描述 BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流,以供以后使用。 BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream,并保存其参数,即输入流,以供以后使用。 方法总结 修饰符和类型 方法 描述 int available() 返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 void close() 关闭此输入流并释放与该流关联的所有系统资源。 void mark(int readlimit) 参见 InputStream 的 mark 方法的通用约定。 boolean markSupported() 测试此输入流是否支持 mark 和 reset 方法。 int read() 参见 InputStream 的 read 方法的通用约定。 int read(byte[] b, int off, int len) 从此字节输入流中将字节读取到指定的字节数组中,从给定的偏移量开始。 void reset() 参见 InputStream 的 reset 方法的通用约定。 long skip(long n) 参见 InputStream 的 skip 方法的通用约定。 从类 java.io.FilterInputStream 继承的方法 read 从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 字段详细信息 buf protected volatile byte[] buf 存储数据的内部缓冲区数组。 必要时,它可以被另一个不同大小的数组替换。 count protected int count 比缓冲区中最后一个有效字节的索引大一的索引。 该值始终在 0 到 buf.length 的范围内; 元素 buf[0] 到 buf[count-1] 包含从底层输入流获得的缓冲输入数据。 marklimit protected int marklimit 在随后调用 reset 方法失败之前调用 mark 方法后允许的最大预读。 每当 pos 和...

Serializable public interface Serializable 类的可序列化性由实现 java.io.Serializable 接口的类启用。未实现此接口的类将不会对其任何状态进行序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于识别可序列化的语义。 为了允许序列化不可序列化类的子类型,子类型可以负责保存和恢复超类型的公共、受保护和(如果可访问)包字段的状态。仅当它扩展的类具有可访问的无参数构造函数来初始化类的状态时,子类型才可以承担此责任。如果不是这种情况,则声明类 Serializable 是错误的。将在运行时检测到错误。 在反序列化过程中,不可序列化类的字段将使用类的公共或受保护的无参数构造函数进行初始化。可序列化的子类必须可以访问无参数构造函数。可序列化子类的字段将从流中恢复。 在遍历图时,可能会遇到不支持 Serializable 接口的对象。在这种情况下,NotSerializableException 将被抛出,并将识别不可序列化对象的类。 在序列化和反序列化过程中需要特殊处理的类必须实现具有这些确切签名的特殊方法: private void writeObject(java.io.ObjectOutputStream out) throws IOException private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException; private void readObjectNoData() throws ObjectStreamException; writeObject 方法负责为其特定类写入对象的状态,以便相应的 readObject 方法可以恢复它。可以通过调用 out.defaultWriteObject 来调用保存 Object 字段的默认机制。该方法不需要关注属于其超类或子类的状态。通过使用 writeObject 方法或使用 DataOutput 支持的原始数据类型的方法将各个字段写入 ObjectOutputStream 来保存状态。 readObject 方法负责从流中读取并恢复类字段。它可以调用 in.defaultReadObject 来调用用于恢复对象的非静态和非瞬态字段的默认机制。 defaultReadObject 方法使用流中的信息将保存在流中的对象的字段分配给当前对象中相应命名的字段。这可以处理类已经演变为添加新字段的情况。该方法不需要关注属于其超类或子类的状态。通过使用 writeObject 方法或使用 DataOutput 支持的原始数据类型的方法将各个字段写入 ObjectOutputStream 来保存状态。 如果序列化流未将给定类列为被反序列化对象的超类,readObjectNoData 方法负责为其特定类初始化对象的状态。这可能发生在接收方使用与发送方不同版本的反序列化实例类的情况下,并且接收方的版本扩展了发送方版本未扩展的类。如果序列化流已被篡改,也可能发生这种情况;因此,尽管存在“敌对”或不完整的源流,但 readObjectNoData 对于正确初始化反序列化对象很有用。 在将对象写入流时需要指定要使用的替代对象的可序列化类应使用精确签名实现此特殊方法: ANY-ACCESS-MODIFIER Object writeReplace() throws ObjectStreamException; 如果该方法存在并且可以从被序列化对象的类中定义的方法访问,则该 writeReplace 方法由序列化调用。 因此,该方法可以具有私有、受保护和包私有访问。 对该方法的子类访问遵循 java 可访问性规则。 当从流中读取实例时需要指定替换的类应该使用精确的签名实现这个特殊方法。 ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException; 此 readResolve 方法遵循与 writeReplace 相同的调用规则和可访问性规则。 序列化运行时将版本号与每个可序列化类相关联,称为 serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送者和接收者是否已为该对象加载了与序列化兼容的类。 如果接收者为对象加载了一个类,该对象的 serialVersionUID 与相应发送者的类不同,则反序列化将导致 InvalidClassException。 可序列化的类可以通过声明一个名为“serialVersionUID”的字段来显式声明自己的serialVersionUID,该字段必须是静态的、最终的和long类型: ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L; 如果可序列化类没有显式声明 serialVersionUID,则序列化运行时将根据类的各个方面为该类计算默认的 serialVersionUID 值,如 Java(TM) 对象序列化规范中所述。但是,强烈建议所有可序列化的类都显式声明 serialVersionUID 值,因为默认的 serialVersionUID 计算对类细节高度敏感,这些细节可能因编译器实现而异,因此可能在反序列化期间导致意外的 InvalidClassExceptions。因此,为了保证在不同的 java 编译器实现中具有一致的 serialVersionUID 值,可序列化的类必须声明一个显式的 serialVersionUID 值。还强烈建议显式 serialVersionUID...

ObjectStreamConstants public interface ObjectStreamConstants 写入对象序列化流的常量。 Since: JDK 1.1 字段摘要 修饰符和类型 字段 描述 static int baseWireHandle 要分配的第一个导线句柄。 static int PROTOCOL_VERSION_1 流协议版本。 static int PROTOCOL_VERSION_2 流协议版本。 static byte SC_BLOCK_DATA ObjectStreamClass 标志的位掩码。 static byte SC_ENUM ObjectStreamClass 标志的位掩码。 static byte SC_EXTERNALIZABLE ObjectStreamClass 标志的位掩码。 static byte SC_SERIALIZABLE ObjectStreamClass 标志的位掩码。 static byte SC_WRITE_METHOD ObjectStreamClass 标志的位掩码。 static short STREAM_MAGIC 写入流标头的幻数。 static short STREAM_VERSION 写入流标头的版本号。 static SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION 启用 readObject 和 writeObject 的覆盖。 static SerializablePermission SUBSTITUTION_PERMISSION 在序列化/反序列化期间启用一个对象替换另一个对象。 static byte TC_ARRAY 新数组。 static byte TC_BASE 第一个标签值。 static byte TC_BLOCKDATA 可选数据块。 static byte TC_BLOCKDATALONG 长块数据。 static byte TC_CLASS 参考类。 static byte TC_CLASSDESC 新的类描述符。 static byte TC_ENDBLOCKDATA 对象的可选块数据块的结尾。 static byte TC_ENUM 新的枚举常量。 static byte TC_EXCEPTION 写入期间出现异常。 static byte TC_LONGSTRING 长串。 static byte TC_MAX 最后一个标签值。 static byte TC_NULL 空对象引用。 static byte TC_OBJECT 新对象。 static byte TC_PROXYCLASSDESC 新的代理类描述符。 static byte TC_REFERENCE 对已写入流的对象的引用。 static byte TC_RESET 重置流上下文。 static byte TC_STRING 新字符串。 字段详细信息 PROTOCOL_VERSION_1 static final int PROTOCOL_VERSION_1 流协议版本。 调用此方法后,所有可外部化的数据都以 JDK 1.1 的外部数据格式写入。 需要此版本来编写包含可被 JDK 1.1.6 之前的 JVM 读取的 Externalizable 数据的流。 Since: 1.2...

ObjectOutput public interface ObjectOutput extends DataOutput, AutoCloseable ObjectOutput 扩展了 DataOutput 接口以包括对象的写入。 DataOutput 包括用于输出原始类型的方法,ObjectOutput 扩展了该接口以包括对象、数组和字符串。 Since: JDK1.1 方法总结 修饰符和类型 方法 描述 void close() 关闭流。 void flush() 冲洗流。 void write(byte[] b) 写入一个字节数组。 void write(byte[] b, int off, int len) 写入一个子字节数组。 void write(int b) 写入一个字节。 void writeObject(Object obj) 将对象写入底层存储或流。 从接口 java.io.DataOutput 继承的方法 writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFloat, writeInt, writeLong, writeShort, writeUTF 方法详情 writeObject void writeObject(Object obj) throws IOException 将对象写入底层存储或流。 实现此接口的类定义了对象的编写方式。 参数: 参数名称 参数描述 obj 要写入的对象 Throws: Throw名称 Throw描述 IOException 任何常见的输入/输出相关异常。 write void write(int b) throws IOException 写入一个字节。 此方法将阻塞,直到实际写入字节。 指定者: 写入接口DataOutput 参数: 参数名称 参数描述 b 字节 Throws: Throw名称 Throw描述 IOException 如果发生 I/O 错误。 write void write(byte[] b) throws IOException 写入一个字节数组。 此方法将阻塞,直到实际写入字节。 指定者: 写入接口DataOutput 参数: 参数名称 参数描述 b 要写入的数据 Throws: Throw名称 Throw描述 IOException 如果发生 I/O 错误。 write void write(byte[] b, int off, int len) throws IOException 写入一个子字节数组。 指定者: 写入接口DataOutput 参数: 参数名称 参数描述 b 要写入的数据 off...

ObjectInputValidation public interface ObjectInputValidation 回调接口以允许验证图中的对象。 允许在反序列化完整的对象图时调用对象。 Since: JDK1.1 方法总结 修饰符和类型 方法 描述 void validateObject() 验证对象。 方法详情 validateObject void validateObject() throws InvalidObjectException 验证对象。 Throws: Throw名称 Throw描述 InvalidObjectException 如果对象无法验证自己。

ObjectInput public interface ObjectInput extends DataInput, AutoCloseable ObjectInput 扩展了 DataInput 接口以包括对象的读取。 DataInput 包括用于输入原始类型的方法,ObjectInput 扩展了该接口以包括对象、数组和字符串。 Since: JDK1.1 方法总结 修饰符和类型 方法 描述 int available() 返回可以在不阻塞的情况下读取的字节数。 void close() 关闭输入流。 int read() 读取一个字节的数据。 int read(byte[] b) 读入一个字节数组。 int read(byte[] b, int off, int len) 读入一个字节数组。 Object readObject() 读取并返回一个对象。 long skip(long n) 跳过 n 个字节的输入。 从接口 java.io.DataInput 继承的方法 readBoolean, readByte, readChar, readDouble, readFloat, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedShort, readUTF, skipBytes 方法详情 readObject Object readObject() throws ClassNotFoundException, IOException 读取并返回一个对象。 实现此接口的类定义了从何处“读取”对象。 返回: 从流中读取的对象 Throws: Throw名称 Throw描述 ClassNotFoundException 如果找不到序列化对象的类。 IOException 如果发生任何常见的输入/输出相关异常。 read int read() throws IOException 读取一个字节的数据。 如果没有可用的输入,此方法将阻塞。 返回: 读取的字节,如果到达流的末尾,则为 -1。 Throws: Throw名称 Throw描述 IOException 如果发生 I/O 错误。 read int read(byte[] b) throws IOException 读入一个字节数组。 此方法将阻塞,直到某些输入可用。 参数: 参数名称 参数描述 b 读取数据的缓冲区 返回: 实际读取的字节数,到达流末尾时返回-1。 Throws: Throw名称 Throw描述 IOException 如果发生 I/O 错误。 read int read(byte[] b, int off, int len) throws IOException 读入一个字节数组。 此方法将阻塞,直到某些输入可用。 参数: 参数名称 参数描述 b 读取数据的缓冲区 off 数据的起始偏移量 len 读取的最大字节数 返回:...

Flushable public interface Flushable Flushable 是可以刷新的数据的目的地。 调用 flush 方法将任何缓冲的输出写入底层流。 Since: 1.5 方法总结 修饰符和类型 方法 描述 void flush() 通过将任何缓冲输出写入底层流来刷新此流。 方法详情 flush void flush() throws IOException 通过将任何缓冲输出写入底层流来刷新此流。 Throws: Throw名称 Throw描述 IOException 如果发生 I/O 错误

FilenameFilter @FunctionalInterface public interface FilenameFilter 实现此接口的类的实例用于过滤文件名。 这些实例用于过滤类 File 的 list 方法中的目录列表,并由 Abstract Window Toolkit 的文件对话框组件。 Since: JDK1.0 方法总结 修饰符和类型 方法 描述 boolean accept(File dir, String name) 测试指定文件是否应包含在文件列表中。 方法详情 accept boolean accept(File dir, String name) 测试指定文件是否应包含在文件列表中。 参数: 参数名称 参数描述 dir 找到文件的目录。 name 文件的名称。 返回: 当且仅当名称应包含在文件列表中时为 true; 否则为 false。