gpt4 book ai didi

java - 类型的未知长度会给 `ObjectInputStream.readObject()` 带来麻烦吗?

转载 作者:行者123 更新时间:2023-12-02 11:58:27 25 4
gpt4 key购买 nike

我试图弄清楚如何多次调用 ObjectInputStream.readObject() 才能正确读取不同类型的未知长度的数据。

例如(如下所示),我使用多次调用 ObjectOutputStream.writeObject() 方法将一个整数数组写入一个文件,然后将一个字符串写入文件。

当我使用多次调用 ObjectInputStream.readObject() 读回数据时,int 数组的长度对于 ObjectInputStream 来说是未知的> oin,那么如何正确求出数组的长度以及后面的String Hello呢?

类型的未知长度会成为 ObjectInputStream.readObject() 的问题吗?

Random random = new Random();
int[] numbers = new int[100];
for (int i=0; i<100; i++){
numbers[i] = random.nextInt();
}

// output
try(FileOutputStream fout = new FileOutputStream("Object.txt");
ObjectOutputStream oout = new ObjectOutputStream(fout)){
oout.writeObject(numbers);
oout.writeObject("Hello");
} catch (IOException e){
System.err.println(e);
}

// input
try(FileInputStream fin = new FileInputStream("Object.txt");
ObjectInputStream oin = new ObjectInputStream(fin)){
int[] input = (int[]) oin.readObject();
String str = (String) oin.readObject();
for (int i=0; i<100; i++){
if (input[i] != numbers[i])
System.out.println("The i-th numbers " + input[i] + " and " + numbers[i] + " read and written are not equal.");
}
System.out.println(str);
} catch (IOException | ClassNotFoundException e){
System.err.println(e);
}

谢谢。

最佳答案

它不是未知的,它存储在流中。所有必需的数据都存储在流中,以允许 ObjectInputStream 正确地读回它。

这也是需要同时使用ObjectOutputStreamObjectInputStream的原因。他们知道如何互相理解。

关于java - 类型的未知长度会给 `ObjectInputStream.readObject()` 带来麻烦吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47434989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com