0

readFileFixed メソッドで FileReader の周りに BufferedReader を実装/ラップするにはどうすればよいですか? 私も調べる必要があります:

  1. 変数の初期化。
  2. 例外処理
  3. リーダーを閉じる
  4. ファイルの読み取り方法。

どんなヒントでも大歓迎です。

package codeTest;


import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import java.util.Scanner;

public class CodeTestExerciseBadCode {

    private static final String testFilename = "CodeTestExerciseBadCode.java";

    public CodeTestExerciseBadCode() {}


    public static void main(String[] args) throws IOException {
        CodeTestExerciseBadCode part2 = new CodeTestExerciseBadCode();

        System.out.println(part2.readFileFixed());
    }

    public String readFile() {
        File f = null;
        FileReader fr = null;
        StringBuffer content = null;

        try {
        f = new File(testFilename);
        fr = new FileReader(f);

        int c;

            while ((c = fr.read()) != -1) {
                if (content == null) {
                content = new StringBuffer();
                }

            content.append((char) c);
            }

        fr.close();
        } catch (Exception e) {
            // Error message along with the cause of the Error
            throw new RuntimeException("An error occured reading your file", e);
        }

    return content.toString();
    }

    public String readFileFixed() throws IOException {
        StringBuffer content = null;
        File file = new File(testFilename);

        // I added this as a test. If directory name is provided then no issues
        if (file.isFile() && (file.length() > 0)) {

            // Placed inside the if() block, to avoid creating it unnecessarily if not needed
            content = new StringBuffer();

            try {
                Scanner scanner = new Scanner(file);

                while (scanner.hasNextLine()) {
                    content.append(scanner.nextLine());
                    content.append(System.getProperty("line.separator"));
                }

            } catch (Exception e) {
                // Throw an exception instead of printing the stack trace
                throw new IOException("An error occured reading your file", e);
            }
        }

        return((content == null)
        ? ""
        : content.toString());
    }
}
4

1 に答える 1

2

の線に沿った何か

String s;
File file = new File("file.txt");
StringBuilder content = new StringBuilder( (int) file.length());
BufferedReader r = new BufferedReader(new FileReader(file));
try {
  while ( (s = r.readLine()) != null ) {
    content.append(s);
    content.append('\n');
} finally {
    r.close();
}

また、この Web ページの右側には、役立つ可能性のあるリンクが多数表示されます。

于 2013-01-23T20:54:40.157 に答える