- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因为 writeByte() 的目的在两个类中是相同的。但是两者写的内容不同。
import java.io.*;
class First
{
public static void main(String[] args) throws IOException
{
FileOutputStream fos = new FileOutputStream("b.txt");
Line 1: ObjectOutputStream oos = new ObjectOutputStream(fos);
Line 2: DataOutputStream oos = new DataOutputStream(fos);
oos.writeByte(65);
oos.close();
FileInputStream fis = new FileInputStream("b.txt");
int x=0;
System.out.println("Output");
while((x=fis.read())!=-1)
{
System.out.println(x);
}
fis.close();
}
}
如果第一行被注释掉,输出为:
65
如果第 2 行被注释掉,则输出为:
172
237
0
5
119
1
65
为什么会有这种差异?
最佳答案
对象流用于写入对象。这意味着它有格式化信息来说明你写了什么以及你写的数据。 Object Streams 在开头也有一个 header ,用于检查数据是否为 Object Stream。
Data Streams 只写入您要求的数据。没有额外的信息。
顺便说一句,如果您想查看写入 Stream 的内容,您可以写入 ByteArrayOutputStream
并在完成后调用 toByteArray()
。无需将其写入必须读回的文件。
关于java - 为什么 DataOutputStream 的 writeByte() 和 ObjectOutputStream 的 writeByte() 写入的字节不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39875192/
我正在尝试按照只能处理 GET 查询的指令编写一个最简单的 Java Web 服务器程序。主要思想是从套接字获取一个ObjectOutputStream,使用ObjectInputStream打开本地
我曾经使用带有 Java 的 Android Studio 在 Android 中保存项目。但是现在我想在我用 Flutter SDK(Dart 语言)重写的应用程序中准确地读取这些数据。但似乎编写的
我正在尝试使用 ObjectOutputStream 将几个对象写入文件。之后,我使用 ObjectInputStream 读取该文件。问题是,我只能读取文件中的第一个对象。当我用 Notepad++
我在解决一个实现问题时遇到了麻烦,我有一个类,它的行为类似于列表,但不是将文件保存在某个集合中,而是将它们保存在磁盘上。 当我想向列表中添加一些元素时,就会出现问题。在文件的开头,我有一个 int 告
有没有办法强制 ObjectOutputStream 不依赖以前的写入,应该每次都写入对象属性和完整信息? 我可以从二进制文件中看到,它只写入以前版本的某种增量,如果您尝试加载随机项,它会失败? 最佳
客户端代码: try { Socket socket = new Socket(ip, port); OutputStream output = soc
Socket Client = new Socket("ip", port); private ObjectOutputStream out; out = new ObjectOutputStream
通过 ObjectOutputStream 发送自制对象时,该对象的服务器类和客户端类必须相同吗? 例如,当某个Action只能在服务器上执行时,因为它需要其他几个仅在服务器上可用的类,那么客户端上的
我的项目由两部分组成:服务器端和客户端。当我启动服务器端时,一切正常,但是当我启动客户端时,我会收到此错误: java.io.IOException: stream active at jav
我有这三个类(class): 命令: package pack; public abstract class Command impements java.io.Serializable {
在我的软件中,我需要通过 ObjectOutputStream 在客户端和服务器之间发送消息。 sender方法的核心如下: .... try { objWriter.writeUnshare
我想向文件添加大量数据。我定义了 HYB 类,因为我的对象包含不同类型的数据(String 和 byte[])。我使用 ObjectOutputStream 和 ObjectInputStream 来
我目前正在学习网络,特别是客户端服务器类(class)。我做了很多研究并实现了各种测试程序,但我无法弄清楚为什么/何时需要使用flush()方法。 总是由输入流读入,怎么可能会有数据误留在输出流中呢?
我正在开发 Android 应用程序,我想提交用户名和密码。我现在正在做的是: 为密码创建哈希值 通过 HTTP 请求连接到身份验证服务器 通过 ObjectOutputStream 发送用户名/哈希
我有一个使用 SSLSocket 连接到服务器的客户端。接下来,我尝试使用 ObjectOutputStream oos = new ObjectOutputStream(sslsocket.getO
这个问题在这里已经有了答案: StreamCorruptedException: invalid type code: AC (1 个回答) 关闭 5 年前。 我试图通过单个 发送不同类的多个可序列
我见过一些人问过类似的问题,但任何人发布的唯一答案是你不应该这样做。 但我已经对这两种方式进行了测试 - 它只适用于这种方式。 服务器端 try { // Obtain inp
我正在尝试编写一款地下城大师游戏,英雄将穿过不同的房间并与怪物战斗并获取元素。我想每次英雄达到新级别时都保存它,但即使我已经在英雄及其使用的所有内容上实现了可序列化,我还是收到了IOException
我正在尝试构建一个客户端-服务器 IDE,但在从内存中编译/运行类获取运行时异常的错误日志/异常日志时遇到问题。 我的代码如下所示: public class ServerThread impleme
我在处理之前提出的 question 时遇到了这个问题。 这可能特定于 ObjectInputStream 而不是一般的二进制读取,因此标题可能具有误导性。 从那里开始的问题基本上是这样的:作者已经将
我是一名优秀的程序员,十分优秀!