diff --git a/src/main/org/apache/tools/ant/taskdefs/Replace.java b/src/main/org/apache/tools/ant/taskdefs/Replace.java index 06e55ac64..0c2252eaa 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Replace.java +++ b/src/main/org/apache/tools/ant/taskdefs/Replace.java @@ -402,25 +402,11 @@ public class Replace extends MatchingTask { BufferedReader br = new BufferedReader(reader); BufferedWriter bw = new BufferedWriter(writer); - // read the entire file into a StringBuffer - // size of work buffer may be bigger than needed - // when multibyte characters exist in the source file - // but then again, it might be smaller than needed on - // platforms like Windows where length can't be trusted - int fileLengthInBytes = (int) src.length(); - StringBuffer tmpBuf = new StringBuffer(fileLengthInBytes); - int readChar = 0; - int totread = 0; - while (true) { - readChar = br.read(); - if (readChar < 0) { break; } - tmpBuf.append((char) readChar); - totread++; + String buf = fileUtils.readFully(br); + if (buf == null) { + buf = ""; } - // create a String so we can use indexOf - String buf = tmpBuf.toString(); - //Preserve original string (buf) so we can compare the result String newString = new String(buf); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java b/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java index cd7895a6d..ba1372c12 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java @@ -417,6 +417,9 @@ public class ReplaceRegExp extends Task { pw.flush(); } else { String buf = fileUtils.readFully(br); + if (buf == null) { + buf = ""; + } String res = doReplace(regex, subs, buf, options);