Man*_*dan -2 java serialization biginteger
我必须使用以下语句将biginteger写入文本文件.
out.writeObject(n1);
Run Code Online (Sandbox Code Playgroud)
其中我的n1是长度为512位的大整数.
从文本文件中读取相同的对象给我一个不同的值n1.任何人都可以帮我解决这个问题.用于读取值的语句是:
in.readObject();
Run Code Online (Sandbox Code Playgroud)
提前致谢.
你忘记发布SSCCE了,所以这里有一个给你:
BigInteger big = new BigInteger("515377520732011331036461129765621272702107522001");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream outputStream = new ObjectOutputStream(baos);
outputStream.writeObject(big);
byte[] rawBytes = baos.toByteArray();
ObjectInputStream inputStream = new ObjectInputStream(new ByteArrayInputStream(rawBytes));
BigInteger bigReadBack = (BigInteger) inputStream.readObject();
assertThat(big).isEqualTo(bigReadBack);
Run Code Online (Sandbox Code Playgroud)
像魅力,序列化和反序列化一样工作3^100.你能试试上面的代码吗?
更新:文件示例(抱歉非描述性变量名称):
BigInteger big = new BigInteger("515377520732011331036461129765621272702107522001");
OutputStream fos = new FileOutputStream("big.ser");
ObjectOutputStream outputStream = new ObjectOutputStream(fos);
outputStream.writeObject(big);
fos.close();
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("big.ser"));
BigInteger bigReadBack = (BigInteger) inputStream.readObject();
assertThat(big).isEqualTo(bigReadBack);
Run Code Online (Sandbox Code Playgroud)
BTW将Java序列化的二进制数据存储在带.txt扩展名的文件中通常是一个坏主意......而且不要忘记缓存!(BufferedInputStream/ BufferedOutputstream).
| 归档时间: |
|
| 查看次数: |
3449 次 |
| 最近记录: |