Java Java类设置 1
ObjectInputStream 类反序列化以前由 ObjectOutputStream 写入的原始数据和对象。
- ObjectOutputStream 和 ObjectInputStream 都被使用,因为它为对象图提供存储。
- 它确保它正在工作的对象与 JVM 的类(即Java虚拟机)相匹配。只有那些 Object 可以从支持Serializable或Externalizable – IO 类的流中读取,否则会出错。
Serializable 基本上是 JVM(Java虚拟机)的一种标记,指示它写出 Stream 中存在的 Object 的状态
宣言 :
public class ObjectInputStream
extends InputStream
implements ObjectInput, ObjectStreamConstants
构造函数:
- protected ObjectInputStream() :帮助子类不分配 ObjectInputStream 使用的私有数据,如果它们正在重新实现 ObjectInputStream。
- ObjectInputStream(InputStream source_input) :创建从“source_input”输入流中读取数据的 ObjectInputStream。
方法:
- read() : Java.io.ObjectInputStream.read()读取数据字节并阻塞,以防没有数据可供读取。
句法 :public int read() Parameters : ----------- Return : reads byte else, return -1 if end of Stream is detected. Exception : -> IOException : in case of any IO error occurs.
- readBoolean() : Java.io.ObjectInputStream.readBoolean()读入一个布尔值。
句法 :public int readBoolean() Parameters : ----------- Return : reads in a boolean. Exception : -> IOException : in case of any IO error occurs. -> EOFException : if end of the stream is reached.
// Java program explaining the working of read(), readBoolean() method import java.io.*; public class NewClass { public static void main(String[] args) throws IOException { // create a new file with an ObjectOutputStream and ObjectInputStream FileOutputStream geek_out = new FileOutputStream("GEEKS.txt"); ObjectOutputStream geek_outStream = new ObjectOutputStream(geek_out); ObjectInputStream Geek_inStream = new ObjectInputStream(new FileInputStream("GEEKS.txt")); // Methods covered in later geek_outStream.writeBoolean(true); geek_outStream.writeUTF("Geeks For Geeks"); geek_outStream.flush(); // Use of readBoolean() System.out.println("USe of readBoolean() : " + Geek_inStream.readBoolean()); System.out.print("Use of read() method in Java : "); // Use of read() method : reading the content of file for (int i = 0; i < Geek_inStream.available();) { System.out.print((char) Geek_inStream.read()); } } }
输出 :
USe of readBoolean() : true Use of read() method in Java : Geeks For Geeks
- read(byte[] buffer, int offset, int maxlen) : Java.io.ObjectInputStream.read(byte[] buffer, int offset, int maxlen)从'buffer'中读取部分数据,从offset位置到maxlen位置缓冲区。
句法 :public int read(byte[] buffer, int offset, int maxlen) Parameters : buffer : buffer to be read offset : starting position of the buffer maxlen : max. no. of bytes to be read Return : reads 'maxlen' bytes of data else, return -1 if end of Stream is detected. Exception : -> IOException : in case of any IO error occurs.
// Java program explaining the working of // read(byte[] buffer, int offset, int maxlen) import java.io.*; public class NewClass { public static void main(String[] args) throws IOException { // create a new file with an ObjectOutputStream and ObjectInputStream FileOutputStream geek_out = new FileOutputStream("GEEKS.txt"); ObjectOutputStream geek_outStream = new ObjectOutputStream(geek_out); // create an ObjectInputStream for the file we created before ObjectInputStream Geek_inStream = new ObjectInputStream(new FileInputStream("GEEKS.txt")); geek_outStream.writeUTF("GeeksForGeeks"); geek_outStream.flush(); byte[] buffer = new byte[25]; // Use of read(byte[] buffer, int offset, int maxlen) Geek_inStream.read(buffer, 2, 20); System.out.print("Use of read(buffer, offset, maxlen) : "); for (int i = 0; i < 19; i++) { System.out.print((char)buffer[i]); } } }
输出 :
GeeksForGeeks
- readByte() : Java.io.ObjectInputStream.readByte()读取 8 位字节。
句法 :public byte readByte() Parameters : ----------- Return : reads 8-bit byte. Exception : -> IOException : in case of any IO error occurs. -> EOFException : if end of the stream is reached.
- readChar() : Java.io.ObjectInputStream.readChar()读取 16 位字符。
句法 :public int read() Parameters : ----------- Return : reads 16-bit of char. Exception : -> IOException : in case of any IO error occurs. -> EOFException : if end of the stream is reached.
- readDouble() : Java.io.ObjectInputStream.readDouble()读取 64 位双精度。
句法 :public double readDouble() Parameters : ----------- Return : reads 64 bit double. Exception : -> IOException : in case of any IO error occurs. -> EOFException : if end of the stream is reached.
- readFloat() : Java.io.ObjectInputStream.readFloat()读取一个 32 位浮点数。
句法 :public float readFloat() Parameters : ----------- Return : reads a 32 bit float. Exception : -> IOException : in case of any IO error occurs. -> EOFException : if end of the stream is reached.
- readInt() : Java.io.ObjectInputStream.readInt()读取一个 32 位整数。
句法 :public int readInt() Parameters : ----------- Return : reads a 32 bit int. Exception : -> IOException : in case of any IO error occurs. -> EOFException : if end of the stream is reached.
- readLong() : Java.io.ObjectInputStream.readLong()读取 64 位长。
句法 :public long readLong() Parameters : ----------- Return : reads a 64 bit long. Exception : -> IOException : in case of any IO error occurs. -> EOFException : if end of the stream is reached.
// Java program explaining the working of // readChar(), writeByte(), writeDouble(), // writeFloat(), writeInt(), writeLong() import java.io.*; public class NewClass { public static void main(String[] args) throws IOException { // create a new file with an ObjectOutputStream and ObjectInputStream FileOutputStream geek_out = new FileOutputStream("GEEKS.txt"); ObjectOutputStream geek_outStream = new ObjectOutputStream(geek_out); // create an ObjectInputStream for the file we created before ObjectInputStream Geek_inStream = new ObjectInputStream(new FileInputStream("GEEKS.txt")); geek_outStream.writeChar('G'); geek_outStream.writeByte('G'); geek_outStream.writeDouble(00436754746); geek_outStream.writeFloat(2.12345f); geek_outStream.writeInt(3576); geek_outStream.writeLong(368723776); geek_outStream.flush(); // Use of readChar() System.out.println("Use of readChar() : " + Geek_inStream.readChar()); // Use of readByte() : System.out.println("Use of readByte() : " + Geek_inStream.readByte()); // Use of readDouble() : System.out.println("Use of readDouble() : " + Geek_inStream.readDouble()); // Use of readFloat() : System.out.println("Use of readFloat() : " + Geek_inStream.readFloat()); // Use of readInt() : System.out.println("Use of readInt() : " + Geek_inStream.readInt()); // Use of readLong() : System.out.println("Use of readLong() : " + Geek_inStream.readLong()); } }
输出 :
Use of readChar() : G Use of readByte() : 71 Use of readDouble() : 7.5225574E7 Use of readFloat() : 2.12345 Use of readInt() : 3576 Use of readLong() : 368723776
- readUnsignedByte() : Java.io.ObjectInputStream.readUnsignedByte()读取一个无符号的 8 位字节。
句法 :public int readUnsignedByte() Parameters : ----------- Return : reads an unsigned 8 bit byte. Exception : -> IOException : in case of any IO error occurs. -> EOFException : if end of the stream is reached.
- readUnsignedShort() : Java.io.ObjectInputStream.readUnsignedShort()读取一个无符号的 16 位短。
句法 :public int readUnsignedShort() Parameters : ----------- Return : reads an unsigned 16 bit short. Exception : -> IOException : in case of any IO error occurs. -> EOFException : if end of the stream is reached.
// Java program explaining the working of // readUnsignedByte() and readUnsignedShort() import java.io.*; public class NewClass { public static void main(String[] args) throws IOException { // create a new file with an ObjectOutputStream and ObjectInputStream FileOutputStream geek_out = new FileOutputStream("GEEKS.txt"); ObjectOutputStream geek_outStream = new ObjectOutputStream(geek_out); // create an ObjectInputStream for the file we created before ObjectInputStream Geek_inStream = new ObjectInputStream(new FileInputStream("GEEKS.txt")); geek_outStream.writeByte(111); geek_outStream.writeShort(121212); geek_outStream.flush(); // Use of readUnsignedByte() System.out.println("readUnsignedByte() : " + Geek_inStream.readUnsignedByte()); // Use of readUnsignedShort() : System.out.println("readUnsignedShort() : " + Geek_inStream.readUnsignedShort()); } }
输出 :
readUnsignedByte() : 111 readUnsignedShort() : 55676
- readUTF( ) : Java.io.ObjectInputStream.readUTF()以修改后的 UTF-8(Unicode 转换格式)格式读取字符串。 UTF -8 意味着它使用 8 位块来表示一个字符。
句法 :public String readUTF() Parameters : public final Object readObject() Return : reads String in modified UTF-8 (Unicode Transformation Format) format Exception : -> IOException : in case of any IO error occurs.
// Java program explaining the working of readUTF() import java.io.*; public clas// Java program explaining the working of readUTF() import java.io.*; public class NewClass { public static void main(String[] args) throws IOException, ClassNotFoundException { // create a new file with an ObjectOutputStream and ObjectInputStream FileOutputStream geek_out = new FileOutputStream("GEEKS.txt"); ObjectOutputStream geek_outStream = new ObjectOutputStream(geek_out); ObjectInputStream Geek_inStream = new ObjectInputStream(new FileInputStream("GEEKS.txt")); geek_outStream.writeUTF("gEEKSArehERE"); geek_outStream.flush(); // Use of readUTF() method System.out.println("Use of readUTF() : " + Geek_inStream.readUTF()); } }
输出 :
Use of readUTF() : gEEKSArehERE
- skipBytes(int maxlen) : Java.io.ObjectInputStream.skipBytes(int maxlen)跳过“maxlen”号。读取时的字节数。
句法 :public int skipBytes(int maxlen) Parameters : maxlen : max. no. of bytes to be skipped Return : no. of bytes to be skipped Exception : -> IOException : in case of any IO error occurs.
// Java program explaining the working of skipBytes() import java.io.*; public class NewClass { public static void main(String[] args) throws IOException, ClassNotFoundException { // create a new file with an ObjectOutputStream and ObjectInputStream FileOutputStream geek_out = new FileOutputStream("GEEKS.txt"); ObjectOutputStream geek_outStream = new ObjectOutputStream(geek_out); ObjectInputStream Geek_inStream = new ObjectInputStream(new FileInputStream("GEEKS.txt")); geek_outStream.writeUTF("gEEKSArehERE"); geek_outStream.flush(); // Use of skipBytes() : Geek_inStream.skipBytes(7); for (int i = 2; i < Geek_inStream.available(); i++) { System.out.print((char) Geek_inStream.readByte()); } } }
输出 :
Are
- readFully(byte[] destination) : Java.io.ObjectInputStream.readFully(byte[] destination)将所有字节从源读取到目标数组。
句法 :public void readFully(byte[] destination) Parameters : destination : the buffer in which the data is to be read Return : returns the 32 bit float read Exception : -> IOException : in case of any IO error occurs. -> EOFException : if End of stream is reached
// Java program explaining the working of readFully() import java.io.*; public class NewClass { public static void main(String[] args) throws IOException, ClassNotFoundException { // create a new file with an ObjectOutputStream and ObjectInputStream FileOutputStream geek_out = new FileOutputStream("GEEKS.txt"); ObjectOutputStream geek_outStream = new ObjectOutputStream(geek_out); ObjectInputStream Geek_inStream = new ObjectInputStream(new FileInputStream("GEEKS.txt")); geek_outStream.writeUTF("gEEKSArehERE"); geek_outStream.flush(); byte[] destination = new byte[14]; // Use of readFully() Geek_inStream.readFully(destination); String str = new String(destination); System.out.println("Use of readFully(destination, offset, maxlen) : "+str); } }
输出 :
Use of readFully(destination, offset, maxlen) : gEEKSArehERE
- readFully(byte[] destination, int offset, int maxlen) : Java.io.ObjectInputStream.readFully(byte[] destination, int offset, int maxlen)从源读取一些字节(从偏移到 maxlen 位置)到目标大批 。
句法 :public void readFully(byte[] destination, int offset, int maxlen) Parameters : destination : the buffer in which the data is to be read offset : starting position of the buffer maxlen : max no. of bytes to be read Return : void Exception : -> IOException : in case of any IO error occurs. -> EOFException : if End of stream is reached
// Java program explaining the working of // readFully(byte[] destination, int offset, int maxlen) import java.io.*; public class NewClass { public static void main(String[] args) throws IOException, ClassNotFoundException { // create a new file with an ObjectOutputStream and ObjectInputStream FileOutputStream geek_out = new FileOutputStream("GEEKS.txt"); ObjectOutputStream geek_outStream = new ObjectOutputStream(geek_out); ObjectInputStream Geek_inStream = new ObjectInputStream(new FileInputStream("GEEKS.txt")); geek_outStream.writeUTF("gEEKSArehERE"); geek_outStream.flush(); byte[] destination = new byte[14]; // Use of readFully(byte[] destination, int offset, int maxlen) Geek_inStream.readFully(destination, 3, 7); String str = new String(destination); System.out.println("Use of readFully(destination, offset, maxlen) : "+ str); } }
输出 :
Use of readFully(destination, offset, maxlen) : geeks