抛出并捕获IOException

问题描述 投票:1回答:2
   inputFileName = "2.txt";
   outputFileName = "3.txt";

   inputFile = new BufferedReader(new FileReader(inputFileName));
   outputFile = new PrintWriter(new FileWriter(outputFileName));

   String lineOfText = inputFile.readLine();

   while (lineOfText != null)
   {
       if (lineOfText.contains("x"))
       {
           lineOfText = lineOfText.replaceAll("x"+ ".*", "");
       } 
       outputFile.println(lineOfText);
       lineOfText = inputFile.readLine();
   } 

   inputFile.close();
   outputFile.close();

你好,现在我有一个输入和输出,这是否意味着我有两个try和两个catch块(连接到前一个文件并写入第二个文件可能有错误)。或者我只需要一个试块?

如果是这样,我将如何/在哪里实现try和catch块?

java exception-handling io ioexception catch-block
2个回答
2
投票

我只会通过编写一个try / catch / finally-block来使用:

try {
    inputFile = new BufferedReader(new FileReader(inputFileName));
    outputFile = new PrintWriter(new FileWriter(outputFileName));
    String lineOfText = inputFile.readLine();
    while (lineOfText != null) {
        if (lineOfText.contains("x")) {
            lineOfText = lineOfText.replaceAll("x"+ ".*", "");
        } 
        outputFile.println(lineOfText);
        lineOfText = inputFile.readLine();
    } 
} catch(IOException ioe) {
        System.err.println("Caught IOException: " + ioe.getMessage());
} finally {
    if(inputFile != null)
        inputFile.close();
    if(outputFile != null)
        outputFile.close();
}

通过使用finally块,您可以确定ReaderWriter对象肯定是关闭的。


2
投票

我建议使用Java 7的try with resources块,如下面的例子所示,它将处理资源的closing

public static void main(String[] args) throws Exception {
    String inputFileName = "2.txt";
    String outputFileName = "3.txt";
    try (BufferedReader inputFile = new BufferedReader(new FileReader(inputFileName));
            PrintWriter outputFile = new PrintWriter(new FileWriter(outputFileName));) {
        String lineOfText = inputFile.readLine();

        while (lineOfText != null) {
            if (lineOfText.contains("x")) {
                lineOfText = lineOfText.replaceAll("x" + ".*", "");
            }
            outputFile.println(lineOfText);
            lineOfText = inputFile.readLine();
        }
    }catch(Exception e){
        //Handle
    }
}

Heretry with resources的文档。

© www.soinside.com 2019 - 2024. All rights reserved.