2

我正在使用 RandomAccessFile 为文本文件创建数据库。基本上我使用 ArrayList 创建了一个普通存储,现在我需要使用 RandomAccessFile 输出存储的内容。但我被困在如何让 randomAccessFile 方法获取学生商店。这是我的代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.RandomAccessFile;


public class MainApp
{
    private RandomAccessFile File;

    public static void main(String[] args) throws Exception 
    {
        new MainApp().start();

    }
    public void start()throws Exception 
    {
        StudentStore details = new StudentStore();
        Student a = new Student("Becky O'Brien", "DKIT26", "0876126944", "bexo@hotmail.com");
        Student b = new Student("Fabio Borini", "DKIT28", "0876136944", "fabioborini@gmail.com");
        Student c = new Student("Gaston Ramirez", "DKIT29", "0419834501", "gramirez@webmail.com");
        Student d = new Student("Luis Suarez", "DKIT7", "0868989878", "luissuarez@yahoo.com");
        Student e = new Student("Andy Carroll", "DKIT9", "0853456788", "carroll123@hotmail.com");
        details.add(a);
        details.add(b);
        details.add(c);
        details.add(d);
        details.add(e);

        details.print();




        //Create a file object.
        File contactDetailsFile = new File("StudentDetails.txt");
        //Open a buffered output stream to allow write to file operations.
        PrintWriter out = new PrintWriter(
                          new BufferedWriter(
                          new FileWriter(contactDetailsFile)));   

        out.println(a);
        out.println(b);
        out.println(c);
        out.println(d);
        out.println(e);
        out.close();

        BufferedReader in = new BufferedReader(
                            new FileReader(contactDetailsFile));

        String line = in.readLine();
        System.out.println(line);

        out.close();

    }
/**
 * @param args the command line arguments
 */
public void RandomAccessFile(String filename) 
{

    RandomAccessFile randomAccessFile = null;
    try {

        //Declare variables that we're going to write
        String line1 = "First line\n";
        String line2 = "Second line\n";

        //Create RandomAccessFile instance with read / write permissions
        randomAccessFile = new RandomAccessFile(filename, "rw");

        //Write two lines to the file
        randomAccessFile.writeBytes(line1);
        randomAccessFile.writeBytes(line2);

        //Place the file pointer at the end of the first line
        randomAccessFile.seek(line1.length());

        //Declare a buffer with the same length as the second line
        byte[] buffer = new byte[line2.length()];

        //Read data from the file
        randomAccessFile.read(buffer);

        //Print out the buffer contents
        System.out.println(new String(buffer));

    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        try {

            if (randomAccessFile != null)
                randomAccessFile.close();

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

}   

}
4

1 回答 1

3

一句话,是的。

但是,您将不得不再次重新执行此解决方案的写入文件部分。您必须以与编写对象相同的方式读取对象。

从这个示例中,您可以看到每个成员是如何使用RandomAccessFile对象编写的。

我建议您让示例中的 read 方法返回一个新的 Student 对象。

于 2012-08-05T01:00:15.883 回答