Java中随机存取文件的读/写
我正在尝试使用RandomAccessFile。我正在做的是尝试将消息存储在文件中,并尝试从一个指针获取指向另一个指针的所有消息Java中随机存取文件的读/写,java,file,random-access,Java,File,Random Access,我正在尝试使用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(mes
//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);
}
}
阅读……我是如何阅读的:
//I want to retrieve all messages from "from" to "to"
公共void检索(长从、长到){
我希望检索以下内容,但事实并非如此:
阅读AGTJXZMCFXENBQOH
阅读QLWXLIBKRPELYHPR
阅读VBUOVQICIOOTOTYK
阅读HPDZRPUGIYAFBGJE
读取ZGLAIXTBGVCLJAGC
阅读UZKUXCWGCIVJLMAF
请说明我的retrieve()函数有什么问题。如有任何反馈,我们将不胜感激。谢谢。两件事:
这甚至可以编译吗?您编写的检索方法中的
while循环开始您正在读取一行,然后前进一个字节并再次读取同一行(减去第一个字节)。很抱歉,while循环中的长时间是一种类型。进行了更正。谢谢。您的检索()
方法毫无意义。即使它编译了(它没有编译),它读取的任何内容都会被丢弃。它的签名应该是字符串检索(长idx)
,它的实现非常简单。没有循环。而且不能将自动递增的long
也视为文件中的偏移量。下定决心吧。它不是记录号,而是字节偏移量。你希望你的seek
调用做什么?转到给定的行号?它们不会。它们转到给定的字节偏移量。这是吗编译?在您编写的检索方法中,while循环
开始您正在读取一行,然后前进一个字节并再次读取同一行(减去第一个字节)。很抱歉,while循环中的长时间是一种类型。进行了更正。谢谢。retrieve()
方法毫无意义。即使它编译了(它没有编译),它读取的任何内容都会被丢弃。它的签名应该是字符串检索(长idx)
,它的实现非常简单。没有循环。而且不能将自动递增的long
也视为文件中的偏移量。下定决心。它不是记录号,而是字节偏移量。你希望你的seek
调用做什么?转到给定的行号?它们不会。它们转到给定的字节偏移量。newLine should应该是System.lineSeparator()。问题不仅在于读取,还在于写入。换行符应该是System.lineSeparator()。问题不仅在于读取,还在于写入。
//I want to retrieve all messages from "from" to "to"
long start = from;
file.seek(start);
while(start < to){
System.out.println(file.readLine());
start++;
file.seek(start);
}
}
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