从列表中向 RandomAcessFile 添加和读取整数。除了最后一个似乎都是“0”
Adding and reading integers to RandomAcessFile from a List. All except the last one seem to be "0"
我正在尝试将列表中的五个随机数写入文件。
我想我正在设法写一些东西,但是当我尝试读取文件时,除了最后一个,它们都是 0
。
我已经搜索过了,但我发现的大部分内容只是解释了如何编写一个 int/string。
我认为问题出在我的写作方式上。 writeInt
写成四个字节,也许我没有按照 seek()
使用。
这是我的代码。
try {
RandomAccessFile ficheroJugador1 = new RandomAccessFile("jugador1.dat", "rw");
for (int i = 0; i < 5; i++) {
try {
ficheroJugador1.seek(i);
int numEscribir = jugador1.numerosAleatorios.get(i);
ficheroJugador1.writeInt(numEscribir);
} catch (IOException e) {
e.printStackTrace();
}
}
for (int i = 0; i < 5; i++) {
try {
ficheroJugador1.seek(i);
try {
System.out.println(ficheroJugador1.readInt());
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
try {
ficheroJugador1.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
这导致:
Numbers [10, 9, 3, 8, 7] //The numbers I want to write and read
0
0
0
0
7
如您所说,未正确使用搜索将覆盖上次保存的号码
(ascii representation)
0010
^
00009
^
000003
^
000008
^
00000007
^
如果您将 ficheroJugador1.seek(i);
更改为 ficheroJugador1.seek(i*4);
,您将正确地为每个数字分配 space
(ascii representation)
00100009000300080007
我正在尝试将列表中的五个随机数写入文件。
我想我正在设法写一些东西,但是当我尝试读取文件时,除了最后一个,它们都是 0
。
我已经搜索过了,但我发现的大部分内容只是解释了如何编写一个 int/string。
我认为问题出在我的写作方式上。 writeInt
写成四个字节,也许我没有按照 seek()
使用。
这是我的代码。
try {
RandomAccessFile ficheroJugador1 = new RandomAccessFile("jugador1.dat", "rw");
for (int i = 0; i < 5; i++) {
try {
ficheroJugador1.seek(i);
int numEscribir = jugador1.numerosAleatorios.get(i);
ficheroJugador1.writeInt(numEscribir);
} catch (IOException e) {
e.printStackTrace();
}
}
for (int i = 0; i < 5; i++) {
try {
ficheroJugador1.seek(i);
try {
System.out.println(ficheroJugador1.readInt());
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
try {
ficheroJugador1.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
这导致:
Numbers [10, 9, 3, 8, 7] //The numbers I want to write and read
0
0
0
0
7
如您所说,未正确使用搜索将覆盖上次保存的号码
(ascii representation)
0010
^
00009
^
000003
^
000008
^
00000007
^
如果您将 ficheroJugador1.seek(i);
更改为 ficheroJugador1.seek(i*4);
,您将正确地为每个数字分配 space
(ascii representation)
00100009000300080007