我试图将以下数组存储在二进制文件中,然后在以下内容中读取它们:
private int[10] number;
private String[10] name;
private int[10] age;
将它们存储到二进制文件中的最佳方法是什么,然后再将它们读回来?每个数组的示例值为:
number[0] = 1; name[0] = "Henry"; age[0] = 35;
所以数据属于一起。
编辑:基本上我想使用二进制文本文件存储来自变量(数组)的数据,二进制是必须的,然后再读回数据。所以简而言之,我希望有一种方法来存储数据,所以当我关闭应用程序,数据不会丢失,可以在每个会话中检索。
答案 0 :(得分:0)
您可以编写自定义编码器和解码器,例如将String
与byte[]
映射到String.getBytes()
,然后使用OutputStream.write()
方法编写每个字节。问题是“最好的方式”是什么意思,因为:
String
语言环境是什么getBytes()
使用平台的默认字符集。String
可能很长或很短。如果要在您的应用程序之外读取文件,那么Protobuf似乎是一个理智的选择。然而,对于Hello World应用程序来说,这将是一种过度杀伤。
最简单的方法是使用ObjectOutputStream
和ObjectInputStream
,但它远非漂亮:
String fileName = "data.set";
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fileName))) {
for (int n : number) {
out.writeInt(n);
}
for (String n : name) {
out.writeUTF(n);
}
for (int a : age) {
out.writeInt(a);
}
}
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(fileName))) {
for (int i = 0; i < number.length; i++) {
number[i] = in.readInt();
}
for (int i = 0; i < name.length; i++) {
name[i] = in.readUTF();
}
for (int i = 0; i < age.length; i++) {
age[i] = in.readInt();
}
}