1
   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 块?

4

2 回答 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块,您可以确定ReaderandWriter对象肯定是关闭的。

于 2017-01-09T22:48:08.800 回答
2

我建议使用try with resourcesJava 7 的块,如下例所示,它也会处理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
    }
}

try with resources.

于 2017-01-09T22:48:31.617 回答