📜  Java Java类设置 1

📅  最后修改于: 2022-05-13 01:55:27.549000             🧑  作者: Mango

Java Java类设置 1

ObjectInputStream 类反序列化以前由 ObjectOutputStream 写入的原始数据和对象。

  • ObjectOutputStream 和 ObjectInputStream 都被使用,因为它为对象图提供存储。
  • 它确保它正在工作的对象与 JVM 的类(即Java虚拟机)相匹配。只有那些 Object 可以从支持SerializableExternalizable – 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