如何恢复文本文件?

时间:2011-09-27 04:03:43

标签: java fileinputstream

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

以下是代码:

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;
}

2 个答案:

答案 0 :(得分:4)

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

您只需致电String[] textArray = readFromFile("yourfilename.txt"); 这将为您提供一个数组,其中文件中的每一行都作为元素。

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;
}

答案 1 :(得分: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();

}

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

但据我了解你的问题,你不想序列化/反序列化一个String-Object,而不是读/写一个文本文件。

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

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