0

テキストファイルから以下のデータを復元したい。問題は、復元できる文字列/行が 1 つだけで、残りのデータを復元できないことです。

コードは次のとおりです。

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 ファイルから行を読み取って配列に入れたい場合は、これらの 2 つの方法が役立つ可能性があります。

これを呼び出すだけ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;
}
于 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();

}

シリアル化中にファイルを上書きしなかったのですか?

しかし、私があなたの質問を理解している限り、テキストファイルの読み取り/書き込みではなく、String-Objectをシリアル化/逆シリアル化することは望まないでしょう。

ファイルの読み取り/書き込みだけを行う場合は、ObjectInputStreamの使用方法が間違っています。

ご覧ください:http: //download.oracle.com/javase/1.3/docs/api/java/io/BufferedReader.html

于 2011-11-08T11:27:26.747 に答える