2013-01-23 24 views
0

如何在readFileFixed方法的FileReader中实现/包装BufferedReader?我还需要研究:如何在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()); 
} 
} 

回答

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

同样的线路,在这个网页的右侧,可以看到一些潜在的有用的链接。

相关问题