inputStream.readObject()使用方法
时间: 2024-02-03 07:03:04 浏览: 22
inputStream.readObject() 是 Java 中 ObjectInputStream 类的一个方法,用于读取一个序列化的对象。它的使用方法如下:
1. 创建 ObjectInputStream 对象,将其与输入流关联。例如:
```
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("object.ser"));
```
2. 调用 readObject() 方法读取对象。例如:
```
Object obj = objectInputStream.readObject();
```
3. 关闭 ObjectInputStream 对象。例如:
```
objectInputStream.close();
```
需要注意的是,如果读取的对象类型是自定义的类,则需要确保该类实现了 Serializable 接口。否则,会抛出 NotSerializableException 异常。
相关问题
各种inputstream的使用
InputStream 是 Java IO 包中的一个抽象类,用于读取不同类型的输入。
最常用的输入流是 FileInputStream,它用于从文件中读取字节流。使用 FileInputStream,需要指定要读取的文件路径,并创建一个 FileInputStream 对象。然后可以使用 read() 方法读取文件的字节内容,直到读取完毕为止。
另一个常用的输入流是 ByteArrayInputStream,它用于从一个字节数组中读取数据。使用 ByteArrayInputStream,只需要将字节数组传递给它的构造函数即可。可以使用 read() 方法从字节数组中读取数据。
除了字节流,Java 还提供了字符输入流,其中最常用的是 FileReader。FileReader 用于从文件中读取字符流。与 FileInputStream 类似,需要指定要读取的文件路径,并创建一个 FileReader 对象。然后可以使用 read() 方法读取文件的字符内容,直到读取完毕为止。
此外,还有其他一些输入流可用于特定的用途。如 ObjectInputStream 用于反序列化对象,可以使用 readObject() 方法读取对象的内容。BufferedInputStream 可以通过为其提供一个 InputStream 对象来提供缓冲功能,从而提高读取效率。DataInputStream 可以用于读取各种基本数据类型的数据,如 int、float 等。
总结来说,不同种类的输入流适用于不同的读取场景,包括从文件、字节数组、字符等位置读取数据。使用相应的输入流类可以方便地读取不同类型的输入,并进行相应的处理操作。
解释代码 public void run() { //获取socket对象 try { socket = new Socket(hostname, port); outputStream = socket.getOutputStream(); oos = new ObjectOutputStream(outputStream); inputStream = socket.getInputStream(); ois = new ObjectInputStream(inputStream); connect(); while (socket.isConnected()) { Message message = (Message)ois.readObject(); if (message != null) { switch (message.getType()) { case NOTIFICATION: LoginController.getInstance().showScene(); chatController.notify(message.getName() + "加入聊天",message.getPicture(),"新朋友加入","sounds/Global.wav"); break; case ERROR: chatController.notify(message.getMsg(),message.getPicture(),"出问题了","sounds/system.wav"); break; case JOINED: case DISCONNECTED: chatController.setUserList(message); break; case TEXT: chatController.showMsg(message); break; } } } } catch (Exception e) { e.printStackTrace(); } }
这段代码是一个线程的 run() 方法。它首先创建一个 Socket 对象,用于连接到主机名为 hostname,端口号为 port 的服务器。然后它获取该 Socket 对象的输入输出流,并创建相应的对象输入输出流。接下来,该方法调用 connect() 方法,该方法在连接成功时会执行一些操作。然后,该方法进入一个 while 循环,不断从输入流中读取消息,并根据消息类型进行不同的操作。如果读取到的消息为 null,那么该线程将一直阻塞在 ois.readObject() 方法处,直到有新的消息到来。如果读取到的消息不为 null,则根据消息类型进行相应的操作,包括显示通知、显示错误信息、更新用户列表和显示聊天消息。
需要注意的是,该代码可能会抛出一些异常,因此需要在 catch 块中对异常进行处理。如果发生异常,该线程将打印异常信息并退出。