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块?
我只会通过编写一个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
块,您可以确定Reader
和Writer
对象肯定是关闭的。
我建议使用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
}
}
Here是try with resources
的文档。