0

我想从文本文件中恢复以下数据。问题是我只能恢复一个字符串/行,我无法恢复其余数据。

这是代码:

public static String restore(String filename) throws IOException, ClassNotFoundException
{
    FileInputStream fn = new FileInputStream(filename);
    ObjectInputStream ob = new ObjectInputStream(fn);
    String sample = (String) ob.readObject();

     return sample;
}
4

2 回答 2

4

很难理解这个问题的含义,但是如果您只想从 .txt 文件中读取行并放入数组中,那么这两种方法可能会有所帮助。

您只需要调用String[] textArray = readFromFile("yourfilename.txt"); This 为您提供一个数组,其中文件中的每一行作为一个元素。

Scanner fScan(String filename) {

        Scanner sc = null;
        try {
            sc = new Scanner(new File(fname));
        } catch (FileNotFoundException e) {
            System.out.println("File not found:" + fname + "  " + e);
        }
        return sc;
}

String[] readFromFile (String fname) {
        Scanner sc = fScan(fname);
            int length = 0;
            String lineCounter;
        while (sc.hasNext()){
            lineCounter = sc.nextLine();
            length++;
        }

        String[] array = new String[length];

        sc = fScan(fname);

        for (int i = 0; i < length; i++) {
        array[i] = sc.nextLine();
        }

        sc.close();
        return array;
}
于 2011-11-08T11:40:30.437 回答
3

您的代码只读取二进制文件中的第一个元素。

public static void restore(String filename) throws IOException, ClassNotFoundException
{
    FileInputStream fn = new FileInputStream(filename);
    ObjectInputStream ob = new ObjectInputStream(fn);
    String string1 = (String) ob.readObject();
    String string2 = (String) ob.readObject();

}

您确定在序列化文件时没有覆盖文件吗?

但据我了解您的问题,您不想序列化/反序列化字符串对象,而不是读取/写入文本文件。

如果你只是想读/写一个文件,那么你使用 ObjectInputStream 的方式是错误的。

看看:http: //download.oracle.com/javase/1.3/docs/api/java/io/BufferedReader.html

于 2011-11-08T11:27:26.747 回答