我正在尝试使用 RandomAccessFile。我正在做的是尝试将消息存储在文件中,并尝试将所有消息从一个指针获取到另一个指针
//file is the RandomAccessFile
//newLine is just new line
我如何存储:
//I want to store a message per line
public void store(long idx, String message){
file.seek(idx);
file.write(message);
file.write(newLine)
}
这就是我填写文件的方式:
void createDummy(String location) throws IOException {
Random r = new Random();
for (int i = 0; i < 10; i++) {
long l = i;
StringBuffer b = new StringBuffer();
for (int j = 0; j < 10; j++) {
b.append((char)r.nextInt(26)+65);
}
String str = b.toString();
store(l, str);
System.out.println("Stored "+str);
}
}
这是输出:
Stored BYOENDRWEBUVGIFR
Stored HNXRKZWPAZUYCUHN
Stored RPRRAXWRBFSRSHJD
Stored AGTJXZMCFXENBQOH
Stored QLWXLIBKRPELYHPR
Stored VBUOVQICIOOTOTYK
Stored HPDZRPUGIYAFBGJE
Stored ZGLAIXTBGVCLJAGC
Stored UZKUXCWGCIVJLMAF
Stored RIXZSEDXQPAVDWEK
阅读...我的阅读方式:
//I want to retrieve all messages from "from" to "to"
公共(public)无效检索(长从,长到){
long start = from;
file.seek(start);
while(start < to){
System.out.println(file.readLine());
start++;
file.seek(start);
}
}
调用检索(3,9);给出以下输出//从 3 检索到 9;
Read NRPRAGTJQLWXLVBUOVQHPDZRPUZGLAIXTBUZKUXCWGCRIXZSEDXQPAVDWEKBT WNWFVVYDPEMCSFVQ RXCZSNOBEPPDKNBB LCPFDVUXWETHVWJQ CPCCDTSOCLSEXIST QZFCQWMQVEXTOGNG SSKTXOYMOBETGVWN DWYIMILEXQMSNUBJ
Read RPRAGTJQLWXLVBUOVQHPDZRPUZGLAIXTBUZKUXCWGCRIXZSEDXQPAVDWEKBT WNWFVVYDPEMCSFVQ RXCZSNOBEPPDKNBB LCPFDVUXWETHVWJQ CPCCDTSOCLSEXIST QZFCQWMQVEXTOGNG SSKTXOYMOBETGVWN DWYIMILEXQMSNUBJ
Read PRAGTJQLWXLVBUOVQHPDZRPUZGLAIXTBUZKUXCWGCRIXZSEDXQPAVDWEKBT WNWFVVYDPEMCSFVQ RXCZSNOBEPPDKNBB LCPFDVUXWETHVWJQ CPCCDTSOCLSEXIST QZFCQWMQVEXTOGNG SSKTXOYMOBETGVWN DWYIMILEXQMSNUBJ
Read RAGTJQLWXLVBUOVQHPDZRPUZGLAIXTBUZKUXCWGCRIXZSEDXQPAVDWEKBT WNWFVVYDPEMCSFVQ RXCZSNOBEPPDKNBB LCPFDVUXWETHVWJQ CPCCDTSOCLSEXIST QZFCQWMQVEXTOGNG SSKTXOYMOBETGVWN DWYIMILEXQMSNUBJ
Read AGTJQLWXLVBUOVQHPDZRPUZGLAIXTBUZKUXCWGCRIXZSEDXQPAVDWEKBT WNWFVVYDPEMCSFVQ RXCZSNOBEPPDKNBB LCPFDVUXWETHVWJQ CPCCDTSOCLSEXIST QZFCQWMQVEXTOGNG SSKTXOYMOBETGVWN DWYIMILEXQMSNUBJ
Read GTJQLWXLVBUOVQHPDZRPUZGLAIXTBUZKUXCWGCRIXZSEDXQPAVDWEKBT WNWFVVYDPEMCSFVQ RXCZSNOBEPPDKNBB LCPFDVUXWETHVWJQ CPCCDTSOCLSEXIST QZFCQWMQVEXTOGNG SSKTXOYMOBETGVWN DWYIMILEXQMSNUBJ
我希望检索以下内容,但事实并非如此:
阅读 AGTJXZMCFXENBQOH 阅读 QLWXLIBKRPELYHPR 阅读 VBUOVQICIOOTOTYK 阅读 HPDZRPUGIYAFBGJE 阅读 ZGLAIXTBGVCLJAGC 阅读 UZKUXCWGCIVJLMAF
请问我的retrieve()函数出了什么问题。如有任何反馈,我们将不胜感激。谢谢。
最佳答案
有两件事:
你的newLine到底是什么,它应该是“\n”。
当您在 while 循环中读取该文件时,不需要调用
文件.seek(开始);
完全没有。因为光标会自动转到之后的下一行file.readLine();
关于java - 在 Java 中从 RandomAccessFile 读取/写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40272611/