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

此外,在此网页的右侧,您会看到许多可能有用的链接。

于 2013-01-23T20:54:40.157 回答