使用修改的DataInputStreams进行Java读/写

使用修改的DataInputStreams进行Java读/写,java,io,fileinputstream,datainputstream,Java,Io,Fileinputstream,Datainputstream,这是我必须处理的样本。我花了大约30分钟,但找不到任何关于如何使用这门课的全面信息 让我解释一下我们需要做什么。有一个数据库类,它将“学生”的数据存储在链接列表中。在main方法中,我们使用数据库类中的add()方法将学生添加到列表中。数据库类有写和读上述文件的方法,但我现在不知道该怎么做。指示指出: 必须打开一个新的文件流 “应缓冲”-不确定这意味着什么 包含的类StudentRecordReader应使用所述缓冲区 public boolean readFromFile(String fil

这是我必须处理的样本。我花了大约30分钟,但找不到任何关于如何使用这门课的全面信息

让我解释一下我们需要做什么。有一个数据库类,它将“学生”的数据存储在链接列表中。在main方法中,我们使用数据库类中的add()方法将学生添加到列表中。数据库类有写和读上述文件的方法,但我现在不知道该怎么做。指示指出:

  • 必须打开一个新的文件流
  • “应缓冲”-不确定这意味着什么
  • 包含的类StudentRecordReader应使用所述缓冲区

    public boolean readFromFile(String fileName){
        boolean success = false;
        Student s = null;
        try{
        //Need to open a file stream
        File file = new File(fileName);
        if(!file.exists()){
            file.createNewFile();
        }
        //Should be then buffered
        DataInputStream in = new DataInputStream(new BufferedInputStream(new           
        FileInputStream(file)));
        StudentRecordReader r;//this should work with a buffered stream
        r = new StudentRecordReader(in);
        r.close();
        }catch(IOException e){
        e.printStackTrace();
        }
    return success;
    }
    

  • 我认为StudentRecordReader必须打开一个缓冲输入流

    DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(path)))
    
    然后从文件中读取学生字段,例如

    String name = dis.readUTF();
    String address = dis.readUTF();
    
    然后根据这些数据创建一个学生

    new Student(name, address);
    

    然后读下一个学生…

    ,这很有意义。我的问题主要是它如何与调用它的方法联系在一起。如何在输入流中进行发送?注意我添加了上面的read方法。在//应该被缓冲行之后,您应该添加新的BufferedInputStream(新的FileInputStream(file));最后一个问题。如果传入(InputStream in),我将如何读取上述学生记录流?您将向StudentReader(而不是DataInputStream)传递InputStream,并在StudentReader中创建新的DataInputStream(in)。顺便说一句,在你最初的版本中是这样的,这似乎是因为我在里面放了一个不同的类。我们使用两个类。第一个用于创建所述流。第二个用于处理它。现在在上面的那个就是创建流的那个。至少我现在是这样理解的。