Browse Source

make sure files get closed during copy.

PR: 7302


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271928 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 23 years ago
parent
commit
5e01ac3c13
1 changed files with 65 additions and 47 deletions
  1. +65
    -47
      src/main/org/apache/tools/ant/util/FileUtils.java

+ 65
- 47
src/main/org/apache/tools/ant/util/FileUtils.java View File

@@ -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) {


Loading…
Cancel
Save