diff --git a/src/main/org/apache/tools/ant/util/FileUtils.java b/src/main/org/apache/tools/ant/util/FileUtils.java index a33788b8a..b90d68c37 100644 --- a/src/main/org/apache/tools/ant/util/FileUtils.java +++ b/src/main/org/apache/tools/ant/util/FileUtils.java @@ -338,59 +338,77 @@ public class FileUtils { BufferedReader in = null; BufferedWriter out = null; - if (encoding == null) { - in = new BufferedReader(new FileReader(sourceFile)); - out = new BufferedWriter(new FileWriter(destFile)); - } else { - in = new BufferedReader(new InputStreamReader( - new FileInputStream(sourceFile), encoding)); - out = new BufferedWriter(new OutputStreamWriter( - new FileOutputStream(destFile), encoding)); - } - - if (filterChainsAvailable) { - ChainReaderHelper crh = new ChainReaderHelper(); - crh.setBufferSize(8192); - crh.setPrimaryReader(in); - crh.setFilterChains(filterChains); - crh.setProject(project); - Reader rdr = crh.getAssembledReader(); - in = new BufferedReader(rdr); - } - - int length; - String newline = null; - String line = in.readLine(); - while (line != null) { - if (line.length() == 0) { - out.newLine(); + try { + if (encoding == null) { + in = new BufferedReader(new FileReader(sourceFile)); + out = new BufferedWriter(new FileWriter(destFile)); } else { - if (filterSetsAvailable) { - newline = filters.replaceTokens(line); + in = + new BufferedReader(new InputStreamReader( + new FileInputStream(sourceFile), + encoding)); + out = + new BufferedWriter(new OutputStreamWriter( + new FileOutputStream(destFile), + encoding)); + } + + if (filterChainsAvailable) { + ChainReaderHelper crh = new ChainReaderHelper(); + crh.setBufferSize(8192); + crh.setPrimaryReader(in); + crh.setFilterChains(filterChains); + crh.setProject(project); + Reader rdr = crh.getAssembledReader(); + in = new BufferedReader(rdr); + } + + int length; + String newline = null; + String line = in.readLine(); + while (line != null) { + if (line.length() == 0) { + out.newLine(); } else { - newline = line; + if (filterSetsAvailable) { + newline = filters.replaceTokens(line); + } else { + newline = line; + } + out.write(newline); + out.newLine(); } - out.write(newline); - out.newLine(); + line = in.readLine(); + } + } finally { + if (out != null) { + out.close(); + } + if (in != null) { + in.close(); } - line = in.readLine(); } - - out.close(); - in.close(); } else { - FileInputStream in = new FileInputStream(sourceFile); - FileOutputStream out = new FileOutputStream(destFile); - - byte[] buffer = new byte[8 * 1024]; - int count = 0; - do { - out.write(buffer, 0, count); - count = in.read(buffer, 0, buffer.length); - } while (count != -1); - - in.close(); - out.close(); + FileInputStream in = null; + FileOutputStream out = null; + try { + in = new FileInputStream(sourceFile); + out = new FileOutputStream(destFile); + + byte[] buffer = new byte[8 * 1024]; + int count = 0; + do { + out.write(buffer, 0, count); + count = in.read(buffer, 0, buffer.length); + } while (count != -1); + } finally { + if (out != null) { + out.close(); + } + if (in != null) { + in.close(); + } + } } if (preserveLastModified) {