Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中随机存取文件的读/写_Java_File_Random Access - Fatal编程技术网

Java中随机存取文件的读/写

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

我正在尝试使用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);
    }

}
阅读……我是如何阅读的:

//I want to retrieve all messages from "from" to "to"
公共void检索(长从、长到){

我希望检索以下内容,但事实并非如此:

阅读AGTJXZMCFXENBQOH 阅读QLWXLIBKRPELYHPR 阅读VBUOVQICIOOTOTYK 阅读HPDZRPUGIYAFBGJE 读取ZGLAIXTBGVCLJAGC 阅读UZKUXCWGCIVJLMAF

请说明我的retrieve()函数有什么问题。如有任何反馈,我们将不胜感激。谢谢。

两件事:

  • 你的新行是什么,应该是“\n”

  • 在while循环中读取该文件时,不需要调用

    file.seek(开始)

    因为光标会自动转到下一行

    readLine()文件

  • 两件事:

  • 你的新行是什么,应该是“\n”

  • 在while循环中读取该文件时,不需要调用

    file.seek(开始)

    因为光标会自动转到下一行

    readLine()文件


  • 这甚至可以编译吗?您编写的检索方法中的
    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