[英]Read/Write from RandomAccessFile in Java
我正在尝试使用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 void retrieve(long from,long to){
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循环中读取该文件时,您不需要调用
file.seek(开始);
一点都不 导致光标自动转到下一行
file.readLine();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.