You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2017/04/12 04:55:01 UTC

[2/2] ant git commit: reduce GC pressure by replacing File(In|Out)putStream

reduce GC pressure by replacing File(In|Out)putStream


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/af74d1f6
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/af74d1f6
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/af74d1f6

Branch: refs/heads/master
Commit: af74d1f6b882cef5f4167d972638ad886d12d58c
Parents: 00d140c
Author: Stefan Bodewig <bo...@apache.org>
Authored: Wed Apr 12 06:54:09 2017 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Wed Apr 12 06:54:09 2017 +0200

----------------------------------------------------------------------
 WHATSNEW                                         |  3 +++
 .../org/apache/tools/ant/AntClassLoader.java     |  6 +++---
 src/main/org/apache/tools/ant/Diagnostics.java   | 12 ++++++------
 src/main/org/apache/tools/ant/Main.java          | 12 ++++++------
 src/main/org/apache/tools/ant/XmlLogger.java     |  5 +++--
 .../apache/tools/ant/helper/ProjectHelper2.java  |  8 ++++----
 .../tools/ant/helper/ProjectHelperImpl.java      | 11 ++++++-----
 .../ant/input/PropertyFileInputHandler.java      |  5 +++--
 .../tools/ant/listener/AnsiColorLogger.java      |  5 +++--
 .../apache/tools/ant/listener/MailLogger.java    |  5 +++--
 .../tools/ant/taskdefs/AbstractCvsTask.java      |  7 +++----
 src/main/org/apache/tools/ant/taskdefs/Ant.java  |  4 ++--
 .../apache/tools/ant/taskdefs/AntStructure.java  |  7 ++++---
 .../org/apache/tools/ant/taskdefs/BUnzip2.java   |  7 ++++---
 .../org/apache/tools/ant/taskdefs/BZip2.java     |  5 +++--
 .../apache/tools/ant/taskdefs/BuildNumber.java   | 13 +++++++------
 .../org/apache/tools/ant/taskdefs/Checksum.java  | 13 +++++++------
 .../org/apache/tools/ant/taskdefs/Concat.java    |  4 ++--
 .../org/apache/tools/ant/taskdefs/EchoXML.java   |  3 +--
 .../org/apache/tools/ant/taskdefs/Expand.java    |  7 ++++---
 .../org/apache/tools/ant/taskdefs/FixCRLF.java   |  4 ++--
 .../org/apache/tools/ant/taskdefs/GUnzip.java    |  7 ++++---
 src/main/org/apache/tools/ant/taskdefs/GZip.java |  5 +++--
 src/main/org/apache/tools/ant/taskdefs/Get.java  |  4 ++--
 src/main/org/apache/tools/ant/taskdefs/Jar.java  |  6 +++---
 .../org/apache/tools/ant/taskdefs/Javac.java     |  4 ++--
 .../org/apache/tools/ant/taskdefs/Javadoc.java   |  8 ++++----
 .../apache/tools/ant/taskdefs/ManifestTask.java  | 11 ++++++-----
 .../org/apache/tools/ant/taskdefs/Property.java  |  6 +++---
 .../apache/tools/ant/taskdefs/RecorderEntry.java |  5 +++--
 .../org/apache/tools/ant/taskdefs/Replace.java   |  7 +++----
 .../org/apache/tools/ant/taskdefs/SQLExec.java   |  3 +--
 src/main/org/apache/tools/ant/taskdefs/Tar.java  |  4 ++--
 .../org/apache/tools/ant/taskdefs/Untar.java     |  6 +++---
 src/main/org/apache/tools/ant/taskdefs/Zip.java  |  7 +++----
 .../tools/ant/taskdefs/cvslib/ChangeLogTask.java | 10 +++++-----
 .../tools/ant/taskdefs/cvslib/CvsTagDiff.java    |  7 ++++---
 .../apache/tools/ant/taskdefs/email/Message.java |  5 +++--
 .../tools/ant/taskdefs/email/PlainMailer.java    |  5 +++--
 .../tools/ant/taskdefs/email/UUMailer.java       |  5 +++--
 .../ant/taskdefs/optional/EchoProperties.java    | 10 +++++-----
 .../ant/taskdefs/optional/PropertyFile.java      | 12 ++++++------
 .../ant/taskdefs/optional/ReplaceRegExp.java     |  7 +++----
 .../apache/tools/ant/taskdefs/optional/Rpm.java  | 10 +++++-----
 .../tools/ant/taskdefs/optional/TraXLiaison.java |  7 +++----
 .../ant/taskdefs/optional/XMLValidateTask.java   |  4 ++--
 .../taskdefs/optional/depend/AntAnalyzer.java    |  5 +++--
 .../optional/depend/DirectoryIterator.java       |  7 ++++---
 .../taskdefs/optional/ejb/DescriptorHandler.java |  7 +++----
 .../optional/ejb/GenericDeploymentTool.java      | 15 +++++++--------
 .../ant/taskdefs/optional/ejb/IPlanetEjbc.java   |  5 +++--
 .../optional/ejb/WeblogicDeploymentTool.java     | 10 ++++------
 .../optional/ejb/WebsphereDeploymentTool.java    |  4 ++--
 .../optional/extension/JarLibManifestTask.java   |  7 ++++---
 .../ant/taskdefs/optional/i18n/Translate.java    | 15 ++++++++-------
 .../tools/ant/taskdefs/optional/image/Image.java |  7 ++++---
 .../tools/ant/taskdefs/optional/jlink/jlink.java | 12 ++++++------
 .../optional/junit/AggregateTransformer.java     |  4 ++--
 .../optional/junit/FormatterElement.java         |  4 ++--
 .../ant/taskdefs/optional/junit/JUnitTask.java   |  6 +++---
 .../taskdefs/optional/junit/JUnitTestRunner.java |  8 +++++---
 .../optional/junit/XMLResultAggregator.java      |  4 ++--
 .../native2ascii/BuiltinNative2Ascii.java        |  7 +++----
 .../tools/ant/taskdefs/optional/net/FTP.java     |  9 ++++-----
 .../taskdefs/optional/net/FTPTaskMirrorImpl.java |  9 ++++-----
 .../tools/ant/taskdefs/optional/pvcs/Pvcs.java   |  5 +++--
 .../tools/ant/taskdefs/optional/ssh/SSHExec.java |  4 ++--
 .../taskdefs/optional/ssh/ScpFromMessage.java    |  4 ++--
 .../ant/taskdefs/optional/ssh/ScpToMessage.java  |  4 ++--
 .../ant/taskdefs/optional/unix/Symlink.java      |  8 ++++----
 .../tools/ant/taskdefs/optional/xz/Unxz.java     |  7 ++++---
 .../tools/ant/taskdefs/optional/xz/Xz.java       |  4 ++--
 .../org/apache/tools/ant/types/FilterSet.java    |  7 ++++---
 .../org/apache/tools/ant/types/XMLCatalog.java   |  4 ++--
 .../tools/ant/types/resources/FileResource.java  |  7 +++----
 .../modifiedselector/ChecksumAlgorithm.java      |  5 +++--
 .../modifiedselector/DigestAlgorithm.java        |  7 ++++---
 .../modifiedselector/PropertiesfileCache.java    |  9 +++++----
 .../tools/ant/util/ConcatFileInputStream.java    |  4 ++--
 .../org/apache/tools/ant/util/FileUtils.java     | 19 +++++++++++++++++++
 .../ant/util/LayoutPreservingProperties.java     |  4 ++--
 .../tools/ant/util/LazyFileOutputStream.java     |  6 +++---
 .../org/apache/tools/ant/util/ResourceUtils.java | 15 ++++-----------
 .../apache/tools/ant/util/ScriptRunnerBase.java  |  7 +++----
 .../org/apache/tools/zip/ZipOutputStream.java    |  4 ++--
 85 files changed, 311 insertions(+), 279 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/WHATSNEW
----------------------------------------------------------------------
diff --git a/WHATSNEW b/WHATSNEW
index 5bc79b5..1475aec 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -25,6 +25,9 @@ Other changes:
  * added "regexp" attribute to <linecontainsregexp>
    Bugzilla Report 60968
 
+ * reduced GC pressure by replacing all usage of FileInputStream and
+   FileOutputStream.
+
 Changes from Ant 1.10.0 TO Ant 1.10.1
 =====================================
 

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/AntClassLoader.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/AntClassLoader.java b/src/main/org/apache/tools/ant/AntClassLoader.java
index f4ee2b0..22c4b29 100644
--- a/src/main/org/apache/tools/ant/AntClassLoader.java
+++ b/src/main/org/apache/tools/ant/AntClassLoader.java
@@ -20,12 +20,12 @@ package org.apache.tools.ant;
 import java.io.ByteArrayOutputStream;
 import java.io.Closeable;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Constructor;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.nio.file.Files;
 import java.security.CodeSource;
 import java.security.ProtectionDomain;
 import java.security.cert.Certificate;
@@ -787,7 +787,7 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener, Clo
             if (jarFile == null && file.isDirectory()) {
                 final File resource = new File(file, resourceName);
                 if (resource.exists()) {
-                    return new FileInputStream(resource);
+                    return Files.newInputStream(resource.toPath());
                 }
             } else {
                 if (jarFile == null) {
@@ -1579,7 +1579,7 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener, Clo
     }
 
     private static boolean readFully(final File f, final byte[] b) throws IOException {
-        try (FileInputStream fis = new FileInputStream(f)) {
+        try (InputStream fis = Files.newInputStream(f.toPath())) {
             final int len = b.length;
             int count = 0, x = 0;
             while (count != len) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/Diagnostics.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/Diagnostics.java b/src/main/org/apache/tools/ant/Diagnostics.java
index 9cd1f81..735b349 100644
--- a/src/main/org/apache/tools/ant/Diagnostics.java
+++ b/src/main/org/apache/tools/ant/Diagnostics.java
@@ -18,15 +18,15 @@
 package org.apache.tools.ant;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.io.PrintStream;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.net.URL;
+import java.nio.file.Files;
 import java.util.Calendar;
 import java.util.Enumeration;
 import java.util.Properties;
@@ -576,12 +576,12 @@ public final class Diagnostics {
         //create the file
         long now = System.currentTimeMillis();
         File tempFile = null;
-        FileOutputStream fileout = null;
-        FileInputStream filein = null;
+        OutputStream fileout = null;
+        InputStream filein = null;
         try {
             tempFile = File.createTempFile("diag", "txt", tempDirectory);
             //do some writing to it
-            fileout = new FileOutputStream(tempFile);
+            fileout = Files.newOutputStream(tempFile.toPath());
             byte[] buffer = new byte[KILOBYTE];
             for (int i = 0; i < TEST_FILE_SIZE; i++) {
                 fileout.write(buffer);
@@ -591,7 +591,7 @@ public final class Diagnostics {
 
             // read to make sure the file has been written completely
             Thread.sleep(1000);
-            filein = new FileInputStream(tempFile);
+            filein = Files.newInputStream(tempFile.toPath());
             int total = 0;
             int read = 0;
             while ((read = filein.read(buffer, 0, KILOBYTE)) > 0) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/Main.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/Main.java b/src/main/org/apache/tools/ant/Main.java
index b104fd3..bbaadd0 100644
--- a/src/main/org/apache/tools/ant/Main.java
+++ b/src/main/org/apache/tools/ant/Main.java
@@ -19,11 +19,11 @@
 package org.apache.tools.ant;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -355,10 +355,10 @@ public class Main implements AntMain {
                 try {
                     final File logFile = new File(args[i + 1]);
                     i++;
-                    // life-cycle of FileOutputStream is controlled by
+                    // life-cycle of OutputStream is controlled by
                     // logTo which becomes "out" and is closed in
                     // handleLogfile
-                    logTo = new PrintStream(new FileOutputStream(logFile)); //NOSONAR
+                    logTo = new PrintStream(Files.newOutputStream(logFile.toPath())); //NOSONAR
                     isLogFileUsed = true;
                 } catch (final IOException ioe) {
                     final String msg = "Cannot write on the specified log file. "
@@ -656,9 +656,9 @@ public class Main implements AntMain {
     private void loadPropertyFiles() {
         for (final String filename : propertyFiles) {
             final Properties props = new Properties();
-            FileInputStream fis = null;
+            InputStream fis = null;
             try {
-                fis = new FileInputStream(filename);
+                fis = Files.newInputStream(Paths.get(filename));
                 props.load(fis);
             } catch (final IOException e) {
                 System.out.println("Could not load property file "

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/XmlLogger.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/XmlLogger.java b/src/main/org/apache/tools/ant/XmlLogger.java
index d03067d..086123e 100644
--- a/src/main/org/apache/tools/ant/XmlLogger.java
+++ b/src/main/org/apache/tools/ant/XmlLogger.java
@@ -17,12 +17,13 @@
  */
 package org.apache.tools.ant;
 
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintStream;
 import java.io.Writer;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Stack;
@@ -185,7 +186,7 @@ public class XmlLogger implements BuildLogger {
             // up everything
             OutputStream stream = outStream;
             if (stream == null) {
-                stream = new FileOutputStream(outFilename);
+                stream = Files.newOutputStream(Paths.get(outFilename));
             }
             out = new OutputStreamWriter(stream, "UTF8");
             out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
index 67e1dec..1fce8bc 100644
--- a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
+++ b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
@@ -18,13 +18,13 @@
 package org.apache.tools.ant.helper;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.net.URL;
 import java.net.URLConnection;
+import java.nio.file.Files;
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Map;
@@ -247,7 +247,7 @@ public class ProjectHelper2 extends ProjectHelper {
             String uri = null;
             if (buildFile != null) {
                 uri = FILE_UTILS.toURI(buildFile.getAbsolutePath());
-                inputStream = new FileInputStream(buildFile);
+                inputStream = Files.newInputStream(buildFile.toPath());
             } else {
                 uri = url.toString();
                 int pling = -1;
@@ -538,10 +538,10 @@ public class ProjectHelper2 extends ProjectHelper {
                 }
                 context.getProject().log("file=" + file, Project.MSG_DEBUG);
                 try {
-                    InputSource inputSource = new InputSource(new FileInputStream(file));
+                    InputSource inputSource = new InputSource(Files.newInputStream(file.toPath()));
                     inputSource.setSystemId(FILE_UTILS.toURI(file.getAbsolutePath()));
                     return inputSource;
-                } catch (FileNotFoundException fne) {
+                } catch (IOException fne) {
                     context.getProject().log(file.getAbsolutePath() + " could not be found",
                                              Project.MSG_WARN);
                 }

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java b/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java
index 97c42a0..dcd2b18 100644
--- a/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java
+++ b/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java
@@ -18,10 +18,11 @@
 package org.apache.tools.ant.helper;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
+import java.nio.file.Files;
 import java.util.Locale;
 
 import org.apache.tools.ant.BuildException;
@@ -110,7 +111,7 @@ public class ProjectHelperImpl extends ProjectHelper {
                 + "default plugin");
         }
         File bFile = (File) source;
-        FileInputStream inputStream = null;
+        InputStream inputStream = null;
         InputSource inputSource = null;
 
         this.project = project;
@@ -124,7 +125,7 @@ public class ProjectHelperImpl extends ProjectHelper {
                 parser = new XMLReaderAdapter(JAXPUtils.getXMLReader());
             }
             String uri = FILE_UTILS.toURI(bFile.getAbsolutePath());
-            inputStream = new FileInputStream(bFile);
+            inputStream = Files.newInputStream(bFile.toPath());
             inputSource = new InputSource(inputStream);
             inputSource.setSystemId(uri);
             project.log("parsing buildfile " + bFile + " with URI = " + uri, Project.MSG_VERBOSE);
@@ -302,10 +303,10 @@ public class ProjectHelperImpl extends ProjectHelper {
                             + "' for compliance with other XML tools", Project.MSG_WARN);
                 }
                 try {
-                    InputSource inputSource = new InputSource(new FileInputStream(file));
+                    InputSource inputSource = new InputSource(Files.newInputStream(file.toPath()));
                     inputSource.setSystemId(FILE_UTILS.toURI(file.getAbsolutePath()));
                     return inputSource;
-                } catch (FileNotFoundException fne) {
+                } catch (IOException fne) {
                     helperImpl.project.log(file.getAbsolutePath() + " could not be found",
                             Project.MSG_WARN);
                 }

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/input/PropertyFileInputHandler.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/input/PropertyFileInputHandler.java b/src/main/org/apache/tools/ant/input/PropertyFileInputHandler.java
index e1e3cf1..22a99d3 100644
--- a/src/main/org/apache/tools/ant/input/PropertyFileInputHandler.java
+++ b/src/main/org/apache/tools/ant/input/PropertyFileInputHandler.java
@@ -18,8 +18,9 @@
 
 package org.apache.tools.ant.input;
 
-import java.io.FileInputStream;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Properties;
 
 import org.apache.tools.ant.BuildException;
@@ -82,7 +83,7 @@ public class PropertyFileInputHandler implements InputHandler {
             props = new Properties();
 
             try {
-                props.load(new FileInputStream(propsFile));
+                props.load(Files.newInputStream(Paths.get(propsFile)));
             } catch (IOException e) {
                 throw new BuildException("Couldn't load " + propsFile, e);
             }

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/listener/AnsiColorLogger.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/listener/AnsiColorLogger.java b/src/main/org/apache/tools/ant/listener/AnsiColorLogger.java
index 7519a7e..0e29b40 100644
--- a/src/main/org/apache/tools/ant/listener/AnsiColorLogger.java
+++ b/src/main/org/apache/tools/ant/listener/AnsiColorLogger.java
@@ -17,10 +17,11 @@
  */
 package org.apache.tools.ant.listener;
 
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Properties;
 
 import org.apache.tools.ant.DefaultLogger;
@@ -162,7 +163,7 @@ public class AnsiColorLogger extends DefaultLogger {
             Properties prop = new Properties();
 
             if (userColorFile != null) {
-                in = new FileInputStream(userColorFile);
+                in = Files.newInputStream(Paths.get(userColorFile));
             } else {
                 in = getClass().getResourceAsStream(systemColorFile);
             }

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/listener/MailLogger.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/listener/MailLogger.java b/src/main/org/apache/tools/ant/listener/MailLogger.java
index 45289a1..25f5bab 100644
--- a/src/main/org/apache/tools/ant/listener/MailLogger.java
+++ b/src/main/org/apache/tools/ant/listener/MailLogger.java
@@ -18,10 +18,11 @@
 package org.apache.tools.ant.listener;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Properties;
@@ -119,7 +120,7 @@ public class MailLogger extends DefaultLogger {
         if (filename != null) {
             InputStream is = null;
             try {
-                is = new FileInputStream(filename);
+                is = Files.newInputStream(Paths.get(filename));
                 fileProperties.load(is);
             } catch (IOException ioe) {
                 // ignore because properties file is not required

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java b/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
index 1ce8116..8762ddc 100644
--- a/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
@@ -20,10 +20,10 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintStream;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Vector;
@@ -201,8 +201,7 @@ public abstract class AbstractCvsTask extends Task {
                 try {
                     setOutputStream(new PrintStream(
                                         new BufferedOutputStream(
-                                            new FileOutputStream(output
-                                                                 .getPath(),
+                                            FileUtils.newOutputStream(Paths.get(output.getPath()),
                                                                  append))));
                 } catch (IOException e) {
                     throw new BuildException(e, getLocation());
@@ -241,7 +240,7 @@ public abstract class AbstractCvsTask extends Task {
                 try {
                     setErrorStream(new PrintStream(
                                        new BufferedOutputStream(
-                                           new FileOutputStream(error.getPath(),
+                                           FileUtils.newOutputStream(Paths.get(error.getPath()),
                                                                 append))));
                 } catch (IOException e) {
                     throw new BuildException(e, getLocation());

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Ant.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Ant.java b/src/main/org/apache/tools/ant/taskdefs/Ant.java
index 793d16c..88fddf8 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Ant.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Ant.java
@@ -19,10 +19,10 @@
 package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.lang.reflect.Method;
+import java.nio.file.Files;
 import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.Hashtable;
@@ -206,7 +206,7 @@ public class Ant extends Task {
                 outfile = getProject().resolveFile(output);
             }
             try {
-                out = new PrintStream(new FileOutputStream(outfile));
+                out = new PrintStream(Files.newOutputStream(outfile.toPath()));
                 DefaultLogger logger = new DefaultLogger();
                 logger.setMessageOutputLevel(Project.MSG_INFO);
                 logger.setOutputPrintStream(out);

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/AntStructure.java b/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
index 8554a2a..eeaab53 100644
--- a/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
@@ -19,12 +19,13 @@
 package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
+import java.nio.file.Files;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Vector;
@@ -85,9 +86,9 @@ public class AntStructure extends Task {
 
         PrintWriter out = null;
         try {
-            FileOutputStream fos = null;
+            OutputStream fos = null;
             try {
-                fos = new FileOutputStream(output);
+                fos = Files.newOutputStream(output.toPath());
                 out = new PrintWriter(new OutputStreamWriter(fos, "UTF8"));
             } catch (final UnsupportedEncodingException ue) {
                 FileUtils.close(fos);

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/BUnzip2.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/BUnzip2.java b/src/main/org/apache/tools/ant/taskdefs/BUnzip2.java
index e4a7995..0122e95 100644
--- a/src/main/org/apache/tools/ant/taskdefs/BUnzip2.java
+++ b/src/main/org/apache/tools/ant/taskdefs/BUnzip2.java
@@ -20,9 +20,10 @@ package org.apache.tools.ant.taskdefs;
 
 
 import java.io.BufferedInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.util.FileUtils;
@@ -60,12 +61,12 @@ public class BUnzip2 extends Unpack {
             log("Expanding " + srcResource.getName() + " to "
                 + dest.getAbsolutePath());
 
-            FileOutputStream out = null;
+            OutputStream out = null;
             CBZip2InputStream zIn = null;
             InputStream fis = null;
             BufferedInputStream bis = null;
             try {
-                out = new FileOutputStream(dest);
+                out = Files.newOutputStream(dest.toPath());
                 fis = srcResource.getInputStream();
                 bis = new BufferedInputStream(fis);
                 int b = bis.read();

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/BZip2.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/BZip2.java b/src/main/org/apache/tools/ant/taskdefs/BZip2.java
index f5944df..1338d4e 100644
--- a/src/main/org/apache/tools/ant/taskdefs/BZip2.java
+++ b/src/main/org/apache/tools/ant/taskdefs/BZip2.java
@@ -20,8 +20,9 @@ package org.apache.tools.ant.taskdefs;
 
 
 import java.io.BufferedOutputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.util.FileUtils;
@@ -44,7 +45,7 @@ public class BZip2 extends Pack {
         CBZip2OutputStream zOut = null;
         try {
             BufferedOutputStream bos =
-                new BufferedOutputStream(new FileOutputStream(zipFile));
+                new BufferedOutputStream(Files.newOutputStream(zipFile.toPath()));
             bos.write('B');
             bos.write('Z');
             zOut = new CBZip2OutputStream(bos);

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/BuildNumber.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/BuildNumber.java b/src/main/org/apache/tools/ant/taskdefs/BuildNumber.java
index aee071d..30552f7 100644
--- a/src/main/org/apache/tools/ant/taskdefs/BuildNumber.java
+++ b/src/main/org/apache/tools/ant/taskdefs/BuildNumber.java
@@ -18,9 +18,10 @@
 package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
 import java.util.Properties;
 
 import org.apache.tools.ant.BuildException;
@@ -84,10 +85,10 @@ public class BuildNumber
             String.valueOf(buildNumber + 1));
 
         // Write the properties file back out
-        FileOutputStream output = null;
+        OutputStream output = null;
 
         try {
-            output = new FileOutputStream(myFile);
+            output = Files.newOutputStream(myFile.toPath());
 
             final String header = "Build Number for ANT. Do not edit!";
 
@@ -144,12 +145,12 @@ public class BuildNumber
      */
     private Properties loadProperties()
          throws BuildException {
-        FileInputStream input = null;
+        InputStream input = null;
 
         try {
             final Properties properties = new Properties();
 
-            input = new FileInputStream(myFile);
+            input = Files.newInputStream(myFile.toPath());
             properties.load(input);
             return properties;
         } catch (final IOException ioe) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Checksum.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Checksum.java b/src/main/org/apache/tools/ant/taskdefs/Checksum.java
index 7a94ca0..f30d8d7 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Checksum.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Checksum.java
@@ -19,10 +19,11 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
 import java.security.DigestInputStream;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
@@ -471,8 +472,8 @@ public class Checksum extends MatchingTask implements Condition {
      */
     private boolean generateChecksums() throws BuildException {
         boolean checksumMatches = true;
-        FileInputStream fis = null;
-        FileOutputStream fos = null;
+        InputStream fis = null;
+        OutputStream fos = null;
         byte[] buf = new byte[readBufferSize];
         try {
             for (Map.Entry<File, Object> e : includeFileMap.entrySet()) {
@@ -481,7 +482,7 @@ public class Checksum extends MatchingTask implements Condition {
                 if (!isCondition) {
                     log("Calculating " + algorithm + " checksum for " + src, Project.MSG_VERBOSE);
                 }
-                fis = new FileInputStream(src);
+                fis = Files.newInputStream(src.toPath());
                 DigestInputStream dis = new DigestInputStream(fis,
                                                               messageDigest);
                 while (dis.read(buf, 0, readBufferSize) != -1) {
@@ -523,7 +524,7 @@ public class Checksum extends MatchingTask implements Condition {
                         }
                     } else {
                         File dest = (File) destination;
-                        fos = new FileOutputStream(dest);
+                        fos = Files.newOutputStream(dest.toPath());
                         fos.write(format.format(new Object[] {
                                                     checksum,
                                                     src.getName(),

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Concat.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Concat.java b/src/main/org/apache/tools/ant/taskdefs/Concat.java
index 1af0143..afffcef 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Concat.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Concat.java
@@ -19,7 +19,6 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -27,6 +26,7 @@ import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringReader;
 import java.io.Writer;
+import java.nio.file.Files;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
@@ -139,7 +139,7 @@ public class Concat extends Task implements ResourceCollection {
                     reader = new BufferedReader(new FileReader(file));
                 } else {
                     reader = new BufferedReader(
-                        new InputStreamReader(new FileInputStream(file),
+                        new InputStreamReader(Files.newInputStream(file.toPath()),
                                               this.encoding));
                 }
                 value = FileUtils.safeReadFully(reader);

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/EchoXML.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/EchoXML.java b/src/main/org/apache/tools/ant/taskdefs/EchoXML.java
index 4a4fda2..5873ab7 100644
--- a/src/main/org/apache/tools/ant/taskdefs/EchoXML.java
+++ b/src/main/org/apache/tools/ant/taskdefs/EchoXML.java
@@ -18,7 +18,6 @@
 package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.OutputStream;
 
 import org.apache.tools.ant.BuildException;
@@ -83,7 +82,7 @@ public class EchoXML extends XMLFragment {
         OutputStream os = null;
         try {
             if (file != null) {
-                os = new FileOutputStream(file.getAbsolutePath(), append);
+                os = FileUtils.newOutputStream(file.toPath(), append);
             } else {
                 os = new LogOutputStream(this, Project.MSG_INFO);
             }

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Expand.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Expand.java b/src/main/org/apache/tools/ant/taskdefs/Expand.java
index 0ec2333..6dd3c92 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Expand.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Expand.java
@@ -20,9 +20,10 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashSet;
@@ -350,9 +351,9 @@ public class Expand extends Task {
             } else {
                 byte[] buffer = new byte[BUFFER_SIZE];
                 int length = 0;
-                FileOutputStream fos = null;
+                OutputStream fos = null;
                 try {
-                    fos = new FileOutputStream(f);
+                    fos = Files.newOutputStream(f.toPath());
 
                     while ((length =
                             compressedInputStream.read(buffer)) >= 0) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java b/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
index 465bf46..af2a21f 100644
--- a/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
+++ b/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
@@ -20,11 +20,11 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.Reader;
+import java.nio.file.Files;
 import java.util.Enumeration;
 import java.util.NoSuchElementException;
 import java.util.Vector;
@@ -421,7 +421,7 @@ public class FixCRLF extends MatchingTask implements ChainableReader {
                 reader = new BufferedReader(
                     ((encoding == null) ? new FileReader(srcFile)
                     : new InputStreamReader(
-                    new FileInputStream(srcFile), encoding)), INBUFLEN);
+                    Files.newInputStream(srcFile.toPath()), encoding)), INBUFLEN);
 
                 nextLine();
             } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/GUnzip.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/GUnzip.java b/src/main/org/apache/tools/ant/taskdefs/GUnzip.java
index b891bae..94f08d7 100644
--- a/src/main/org/apache/tools/ant/taskdefs/GUnzip.java
+++ b/src/main/org/apache/tools/ant/taskdefs/GUnzip.java
@@ -18,9 +18,10 @@
 
 package org.apache.tools.ant.taskdefs;
 
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
 import java.util.zip.GZIPInputStream;
 
 import org.apache.tools.ant.BuildException;
@@ -56,11 +57,11 @@ public class GUnzip extends Unpack {
             log("Expanding " + srcResource.getName() + " to "
                         + dest.getAbsolutePath());
 
-            FileOutputStream out = null;
+            OutputStream out = null;
             GZIPInputStream zIn = null;
             InputStream fis = null;
             try {
-                out = new FileOutputStream(dest);
+                out = Files.newOutputStream(dest.toPath());
                 fis = srcResource.getInputStream();
                 zIn = new GZIPInputStream(fis);
                 byte[] buffer = new byte[BUFFER_SIZE];

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/GZip.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/GZip.java b/src/main/org/apache/tools/ant/taskdefs/GZip.java
index 029f414..4d7be1f 100644
--- a/src/main/org/apache/tools/ant/taskdefs/GZip.java
+++ b/src/main/org/apache/tools/ant/taskdefs/GZip.java
@@ -18,8 +18,9 @@
 
 package org.apache.tools.ant.taskdefs;
 
-import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
 import java.util.zip.GZIPOutputStream;
 
 import org.apache.tools.ant.BuildException;
@@ -41,7 +42,7 @@ public class GZip extends Pack {
     protected void pack() {
         GZIPOutputStream zOut = null;
         try {
-            zOut = new GZIPOutputStream(new FileOutputStream(zipFile));
+            zOut = new GZIPOutputStream(Files.newOutputStream(zipFile.toPath()));
             zipResource(getSrcResource(), zOut);
         } catch (IOException ioe) {
             String msg = "Problem creating gzip " + ioe.getMessage();

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Get.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Get.java b/src/main/org/apache/tools/ant/taskdefs/Get.java
index 674a535..9b92f00 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Get.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Get.java
@@ -20,7 +20,6 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -28,6 +27,7 @@ import java.io.PrintStream;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.net.URLConnection;
+import java.nio.file.Files;
 import java.util.Date;
 import java.util.zip.GZIPInputStream;
 
@@ -852,7 +852,7 @@ public class Get extends Task {
                 is = new GZIPInputStream(is);
             }
 
-            os = new FileOutputStream(dest);
+            os = Files.newOutputStream(dest.toPath());
             progress.beginDownload();
             boolean finished = false;
             try {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Jar.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Jar.java b/src/main/org/apache/tools/ant/taskdefs/Jar.java
index bea5e86..7902075 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Jar.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Jar.java
@@ -21,7 +21,6 @@ package org.apache.tools.ant.taskdefs;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -29,6 +28,7 @@ import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.Reader;
 import java.io.UnsupportedEncodingException;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -303,10 +303,10 @@ public class Jar extends Zip {
     private Manifest getManifest(File manifestFile) {
 
         Manifest newManifest = null;
-        FileInputStream fis = null;
+        InputStream fis = null;
         InputStreamReader isr = null;
         try {
-            fis = new FileInputStream(manifestFile);
+            fis = Files.newInputStream(manifestFile.toPath());
             if (manifestEncoding == null) {
                 isr = new InputStreamReader(fis);
             } else {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Javac.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Javac.java b/src/main/org/apache/tools/ant/taskdefs/Javac.java
index b7f1bbc..6e7cee3 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Javac.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Javac.java
@@ -20,9 +20,9 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
 import java.io.FileFilter;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -1471,7 +1471,7 @@ public class Javac extends MatchingTask {
                 continue;
             }
             log("Creating empty " + pkgInfoClass);
-            try (OutputStream os = new FileOutputStream(pkgInfoClass)) {
+            try (OutputStream os = Files.newOutputStream(pkgInfoClass.toPath())) {
                 os.write(PACKAGE_INFO_CLASS_HEADER);
                 final byte[] name = pkg.getBytes("UTF-8");
                 final int length = name.length + /* "/package-info" */ 13;

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
index ebdce49..ccf1548 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
@@ -20,18 +20,18 @@ package org.apache.tools.ant.taskdefs;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.HashSet;
@@ -2516,7 +2516,7 @@ public class Javadoc extends Task {
             : FILE_UTILS.getDefaultEncoding();
         // we load the whole file as one String (toc/index files are
         // generally small, because they only contain frameset declaration):
-        final InputStream fin = new FileInputStream(file);
+        final InputStream fin = Files.newInputStream(file.toPath());
         String fileContents;
         try {
             fileContents =
@@ -2532,7 +2532,7 @@ public class Javadoc extends Task {
             // we need to patch the file!
             final String patchedFileContents = patchContent(fileContents, fixData);
             if (!patchedFileContents.equals(fileContents)) {
-                final FileOutputStream fos = new FileOutputStream(file);
+                final OutputStream fos = Files.newOutputStream(file.toPath());
                 try {
                     final OutputStreamWriter w = new OutputStreamWriter(fos, enc);
                     w.write(patchedFileContents);

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java b/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java
index 9b600db..8b459be 100644
--- a/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java
@@ -19,12 +19,13 @@
 package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
+import java.nio.file.Files;
 import java.util.Enumeration;
 
 import org.apache.tools.ant.BuildException;
@@ -227,10 +228,10 @@ public class ManifestTask extends Task {
         BuildException error = null;
 
         if (manifestFile.exists()) {
-            FileInputStream fis = null;
+            InputStream fis = null;
             InputStreamReader isr = null;
             try {
-                fis = new FileInputStream(manifestFile);
+                fis = Files.newInputStream(manifestFile.toPath());
                 if (encoding == null) {
                     isr = new InputStreamReader(fis, "UTF-8");
                 } else {
@@ -276,7 +277,7 @@ public class ManifestTask extends Task {
 
         PrintWriter w = null;
         try {
-            FileOutputStream fos = new FileOutputStream(manifestFile);
+            OutputStream fos = Files.newOutputStream(manifestFile.toPath());
             OutputStreamWriter osw = new OutputStreamWriter(fos, Manifest.JAR_ENCODING);
             w = new PrintWriter(osw);
             toWrite.write(w, flattenClassPaths);

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Property.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Property.java b/src/main/org/apache/tools/ant/taskdefs/Property.java
index db2d9d4..c8f33be 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Property.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Property.java
@@ -18,10 +18,10 @@
 package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.nio.file.Files;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -575,9 +575,9 @@ public class Property extends Task {
         log("Loading " + file.getAbsolutePath(), Project.MSG_VERBOSE);
         try {
             if (file.exists()) {
-                FileInputStream  fis = null;
+                InputStream  fis = null;
                 try {
-                    fis = new FileInputStream(file);
+                    fis = Files.newInputStream(file.toPath());
                     loadProperties(props, fis, file.getName().endsWith(".xml"));
                 } finally {
                     FileUtils.close(fis);

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java b/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java
index a495936..0155afc 100644
--- a/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java
+++ b/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java
@@ -17,9 +17,9 @@
  */
 package org.apache.tools.ant.taskdefs;
 
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
+import java.nio.file.Paths;
 
 import org.apache.tools.ant.BuildEvent;
 import org.apache.tools.ant.BuildException;
@@ -27,6 +27,7 @@ import org.apache.tools.ant.BuildLogger;
 import org.apache.tools.ant.DefaultLogger;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.SubBuildListener;
+import org.apache.tools.ant.util.FileUtils;
 import org.apache.tools.ant.util.StringUtils;
 
 /**
@@ -356,7 +357,7 @@ public class RecorderEntry implements BuildLogger, SubBuildListener {
     private void openFileImpl(boolean append) throws BuildException {
         if (out == null) {
             try {
-                out = new PrintStream(new FileOutputStream(filename, append));
+                out = new PrintStream(FileUtils.newOutputStream(Paths.get(filename), append));
             } catch (IOException ioe) {
                 throw new BuildException("Problems opening file using a "
                                          + "recorder entry", ioe);

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Replace.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Replace.java b/src/main/org/apache/tools/ant/taskdefs/Replace.java
index 1b6cb37..5090345 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Replace.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Replace.java
@@ -21,8 +21,6 @@ package org.apache.tools.ant.taskdefs;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -30,6 +28,7 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Reader;
 import java.io.Writer;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -369,7 +368,7 @@ public class Replace extends MatchingTask {
         FileInput(File source) throws IOException {
             outputBuffer = new StringBuffer();
             buffer = new char[BUFF_SIZE];
-            is = new FileInputStream(source);
+            is = Files.newInputStream(source.toPath());
             try {
                 reader = new BufferedReader(encoding != null ? new InputStreamReader(is, encoding) : new InputStreamReader(is));
             } finally {
@@ -429,7 +428,7 @@ public class Replace extends MatchingTask {
          * @throws IOException When the file cannot be read from.
          */
         FileOutput(File out) throws IOException {
-            os = new FileOutputStream(out);
+            os = Files.newOutputStream(out.toPath());
             try {
                 writer = new BufferedWriter(encoding != null ? new OutputStreamWriter(os, encoding) : new OutputStreamWriter(os));
             } finally {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
index d9b7fb4..3ef604d 100644
--- a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
+++ b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
@@ -20,7 +20,6 @@ package org.apache.tools.ant.taskdefs;
 import java.io.BufferedOutputStream;
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -651,7 +650,7 @@ public class SQLExec extends JDBCTask {
                         FileProvider fp =
                             output.as(FileProvider.class);
                         if (fp != null) {
-                            os = new FileOutputStream(fp.getFile(), append);
+                            os = FileUtils.newOutputStream(fp.getFile().toPath(), append);
                         } else {
                             if (append) {
                                 Appendable a =

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Tar.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Tar.java b/src/main/org/apache/tools/ant/taskdefs/Tar.java
index 815477a..653cc5b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Tar.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Tar.java
@@ -20,12 +20,12 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
+import java.nio.file.Files;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -327,7 +327,7 @@ public class Tar extends MatchingTask {
                 tOut = new TarOutputStream(
                     compression.compress(
                         new BufferedOutputStream(
-                            new FileOutputStream(tarFile))),
+                            Files.newOutputStream(tarFile.toPath()))),
                     encoding);
                 tOut.setDebug(true);
                 if (longFileMode.isTruncateMode()) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Untar.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Untar.java b/src/main/org/apache/tools/ant/taskdefs/Untar.java
index c3e6e15..430aa54 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Untar.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Untar.java
@@ -20,11 +20,11 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.BufferedInputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
+import java.nio.file.Files;
 import java.util.zip.GZIPInputStream;
 
 import org.apache.tools.ant.BuildException;
@@ -97,7 +97,7 @@ public class Untar extends Expand {
      */
     /** {@inheritDoc} */
     protected void expandFile(FileUtils fileUtils, File srcF, File dir) {
-        FileInputStream fis = null;
+        InputStream fis = null;
         if (!srcF.exists()) {
             throw new BuildException("Unable to untar "
                     + srcF
@@ -105,7 +105,7 @@ public class Untar extends Expand {
                     getLocation());
         }
         try {
-            fis = new FileInputStream(srcF);
+            fis = Files.newInputStream(srcF.toPath());
             expandStream(srcF.getPath(), fis, dir);
         } catch (IOException ioe) {
             throw new BuildException("Error while expanding " + srcF.getPath()

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/Zip.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Zip.java b/src/main/org/apache/tools/ant/taskdefs/Zip.java
index 580176f..1a17bfc 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Zip.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Zip.java
@@ -20,11 +20,10 @@ package org.apache.tools.ant.taskdefs;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -1177,7 +1176,7 @@ public class Zip extends MatchingTask {
         }
         OutputStream os = null;
         try {
-            os = new FileOutputStream(zipFile);
+            os = Files.newOutputStream(zipFile.toPath());
             // CheckStyle:MagicNumber OFF
             // Cf. PKZIP specification.
             final byte[] empty = new byte[22];
@@ -1915,7 +1914,7 @@ public class Zip extends MatchingTask {
                                      getLocation());
         }
 
-        try (FileInputStream fIn = new FileInputStream(file)) {
+        try (InputStream fIn = Files.newInputStream(file.toPath())) {
             // ZIPs store time with a granularity of 2 seconds, round up
             zipFile(fIn, zOut, vPath,
                     file.lastModified() + (roundUp ? ROUNDUP_MILLIS : 0),

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/cvslib/ChangeLogTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/ChangeLogTask.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/ChangeLogTask.java
index b4b51ce..63cf657 100644
--- a/src/main/org/apache/tools/ant/taskdefs/cvslib/ChangeLogTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/ChangeLogTask.java
@@ -18,12 +18,12 @@
 package org.apache.tools.ant.taskdefs.cvslib;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
+import java.nio.file.Files;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Enumeration;
@@ -386,7 +386,7 @@ public class ChangeLogTask extends AbstractCvsTask {
          throws BuildException {
         if (null != usersFile) {
             try {
-                userList.load(new FileInputStream(usersFile));
+                userList.load(Files.newInputStream(usersFile.toPath()));
             } catch (final IOException ioe) {
                 throw new BuildException(ioe.toString(), ioe);
             }
@@ -462,10 +462,10 @@ public class ChangeLogTask extends AbstractCvsTask {
      */
     private void writeChangeLog(final CVSEntry[] entrySet)
          throws BuildException {
-        FileOutputStream output = null;
+        OutputStream output = null;
 
         try {
-            output = new FileOutputStream(destFile);
+            output = Files.newOutputStream(destFile.toPath());
 
             final PrintWriter writer =
                 new PrintWriter(new OutputStreamWriter(output, "UTF-8"));

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java
index 6f17402..9fbc3fd 100644
--- a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java
+++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java
@@ -19,12 +19,13 @@ package org.apache.tools.ant.taskdefs.cvslib;
 
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -417,9 +418,9 @@ public class CvsTagDiff extends AbstractCvsTask {
      * @exception BuildException if an error occurs
      */
     private void writeTagDiff(CvsTagEntry[] entries) throws BuildException {
-        FileOutputStream output = null;
+        OutputStream output = null;
         try {
-            output = new FileOutputStream(mydestfile);
+            output = Files.newOutputStream(mydestfile.toPath());
             PrintWriter writer = new PrintWriter(
                                      new OutputStreamWriter(output, "UTF-8"));
             writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/email/Message.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/email/Message.java b/src/main/org/apache/tools/ant/taskdefs/email/Message.java
index a73fdfa..a7551bb 100644
--- a/src/main/org/apache/tools/ant/taskdefs/email/Message.java
+++ b/src/main/org/apache/tools/ant/taskdefs/email/Message.java
@@ -20,13 +20,14 @@ package org.apache.tools.ant.taskdefs.email;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileReader;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.PrintStream;
 import java.io.Reader;
+import java.nio.file.Files;
 
 import org.apache.tools.ant.ProjectComponent;
 
@@ -185,7 +186,7 @@ public class Message extends ProjectComponent {
 
     private Reader getReader(File f) throws IOException {
         if (inputEncoding != null) {
-            FileInputStream fis = new FileInputStream(f);
+            InputStream fis = Files.newInputStream(f.toPath());
             try {
                 return new InputStreamReader(fis, inputEncoding);
             } catch (IOException ex) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/email/PlainMailer.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/email/PlainMailer.java b/src/main/org/apache/tools/ant/taskdefs/email/PlainMailer.java
index 3b1f95b..0ad57c6 100644
--- a/src/main/org/apache/tools/ant/taskdefs/email/PlainMailer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/email/PlainMailer.java
@@ -19,9 +19,10 @@ package org.apache.tools.ant.taskdefs.email;
 
 import java.io.BufferedInputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.PrintStream;
+import java.nio.file.Files;
 import java.util.Enumeration;
 
 import org.apache.tools.ant.BuildException;
@@ -148,7 +149,7 @@ class PlainMailer extends Mailer {
         final int maxBuf = 1024;
         byte[] buf = new byte[maxBuf];
 
-        try (FileInputStream finstr = new FileInputStream(file);
+        try (InputStream finstr = Files.newInputStream(file.toPath());
              BufferedInputStream in = new BufferedInputStream(finstr, buf.length)) {
 
             while ((length = in.read(buf)) != -1) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/email/UUMailer.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/email/UUMailer.java b/src/main/org/apache/tools/ant/taskdefs/email/UUMailer.java
index 03af678..0b61ecd 100644
--- a/src/main/org/apache/tools/ant/taskdefs/email/UUMailer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/email/UUMailer.java
@@ -19,9 +19,10 @@ package org.apache.tools.ant.taskdefs.email;
 
 import java.io.BufferedInputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.PrintStream;
+import java.nio.file.Files;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.util.UUEncoder;
@@ -40,7 +41,7 @@ class UUMailer extends PlainMailer {
                  + "readable.");
         }
 
-        try (FileInputStream finstr = new FileInputStream(file);
+        try (InputStream finstr = Files.newInputStream(file.toPath());
              BufferedInputStream in = new BufferedInputStream(finstr)) {
             UUEncoder encoder = new UUEncoder(file.getName());
 

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java b/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java
index 30bcc75..f6681f8 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java
@@ -19,13 +19,13 @@ package org.apache.tools.ant.taskdefs.optional;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -290,9 +290,9 @@ public class EchoProperties extends Task {
                 return;
             }
 
-            FileInputStream in = null;
+            InputStream in = null;
             try {
-                in = new FileInputStream(inFile);
+                in = Files.newInputStream(inFile.toPath());
                 Properties props = new Properties();
                 props.load(in);
                 allProps.putAll(props);
@@ -352,7 +352,7 @@ public class EchoProperties extends Task {
                     }
                     return;
                 }
-                os = new FileOutputStream(this.destfile);
+                os = Files.newOutputStream(this.destfile.toPath());
                 saveProperties(allProps, os);
             }
         } catch (IOException ioe) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java b/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
index 9ad9feb..5a3c215 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
@@ -21,10 +21,10 @@ package org.apache.tools.ant.taskdefs.optional;
 import java.io.BufferedInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
+import java.nio.file.Files;
 import java.text.DateFormat;
 import java.text.DecimalFormat;
 import java.text.ParseException;
@@ -192,15 +192,15 @@ public class PropertyFile extends Task {
             if (propertyfile.exists()) {
                 log("Updating property file: "
                     + propertyfile.getAbsolutePath());
-                try (FileInputStream fis = new FileInputStream(propertyfile);
+                try (InputStream fis = Files.newInputStream(propertyfile.toPath());
                      BufferedInputStream bis = new BufferedInputStream(fis)) {
                     properties.load(bis);
                 }
             } else {
                 log("Creating new property file: "
                     + propertyfile.getAbsolutePath());
-                try (FileOutputStream out =
-                     new FileOutputStream(propertyfile.getAbsolutePath())) {
+                try (OutputStream out =
+                     Files.newOutputStream(propertyfile.toPath())) {
                     out.flush();
                 }
             }
@@ -249,7 +249,7 @@ public class PropertyFile extends Task {
             throw new BuildException(x, getLocation());
         }
         try {
-            OutputStream os = new FileOutputStream(propertyfile); //NOSONAR
+            OutputStream os = Files.newOutputStream(propertyfile.toPath()); //NOSONAR
             try {
                 try {
                     os.write(baos.toByteArray());

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
----------------------------------------------------------------------
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 40b7b5d..f5357bb 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
@@ -20,8 +20,6 @@ package org.apache.tools.ant.taskdefs.optional;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -29,6 +27,7 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Reader;
 import java.io.Writer;
+import java.nio.file.Files;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
@@ -356,8 +355,8 @@ public class ReplaceRegExp extends Task {
         try {
             boolean changes = false;
 
-            try (InputStream is = new FileInputStream(f);
-                 OutputStream os = new FileOutputStream(temp)) {
+            try (InputStream is = Files.newInputStream(f.toPath());
+                 OutputStream os = Files.newOutputStream(temp.toPath())) {
                 Reader r = null;
                 Writer w = null;
                 try {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java b/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java
index 765841d..d1e945c 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java
@@ -19,10 +19,10 @@ package org.apache.tools.ant.taskdefs.optional;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintStream;
+import java.nio.file.Files;
 import java.util.Map;
 
 import org.apache.tools.ant.BuildException;
@@ -149,9 +149,9 @@ public class Rpm extends Task {
             }
         } else {
             if (output != null) {
-                FileOutputStream fos = null;
+                OutputStream fos = null;
                 try {
-                    fos = new FileOutputStream(output); //NOSONAR
+                    fos = Files.newOutputStream(output.toPath()); //NOSONAR
                     BufferedOutputStream bos = new BufferedOutputStream(fos);
                     outputstream = new PrintStream(bos);
                 } catch (IOException e) {
@@ -164,9 +164,9 @@ public class Rpm extends Task {
                 outputstream = new LogOutputStream(this, Project.MSG_DEBUG);
             }
             if (error != null) {
-                FileOutputStream fos = null;
+                OutputStream fos = null;
                 try {
-                    fos = new FileOutputStream(error);
+                    fos = Files.newOutputStream(error.toPath());
                     BufferedOutputStream bos = new BufferedOutputStream(fos);
                     errorstream = new PrintStream(bos);
                 }  catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
index f2fcd9a..f5a6717 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
@@ -21,13 +21,12 @@ package org.apache.tools.ant.taskdefs.optional;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.lang.reflect.Field;
 import java.net.URL;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -191,8 +190,8 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware
         InputStream fis = null;
         OutputStream fos = null;
         try {
-            fis = new BufferedInputStream(new FileInputStream(infile));
-            fos = new BufferedOutputStream(new FileOutputStream(outfile));
+            fis = new BufferedInputStream(Files.newInputStream(infile.toPath()));
+            fos = new BufferedOutputStream(Files.newOutputStream(outfile.toPath()));
             final StreamResult res = new StreamResult(fos);
             // not sure what could be the need of this...
             res.setSystemId(JAXPUtils.getSystemId(outfile));

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
index 26b49a2..8a25341 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
@@ -18,8 +18,8 @@
 package org.apache.tools.ant.taskdefs.optional;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
+import java.nio.file.Files;
 import java.util.Vector;
 
 import org.apache.tools.ant.AntClassLoader;
@@ -550,7 +550,7 @@ public class XMLValidateTask extends Task {
         try {
             log("Validating " + afile.getName() + "... ", Project.MSG_VERBOSE);
             errorHandler.init(afile);
-            InputSource is = new InputSource(new FileInputStream(afile));
+            InputSource is = new InputSource(Files.newInputStream(afile.toPath()));
             String uri = FILE_UTILS.toURI(afile.getAbsolutePath());
             is.setSystemId(uri);
             xmlReader.parse(is);

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
index d490955..8f0a579 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/depend/AntAnalyzer.java
@@ -18,9 +18,10 @@
 package org.apache.tools.ant.taskdefs.optional.depend;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Vector;
@@ -80,7 +81,7 @@ public class AntAnalyzer extends AbstractAnalyzer {
                     InputStream inStream = null;
                     try {
                         if (container.getName().endsWith(".class")) {
-                            inStream = new FileInputStream(container.getPath());
+                            inStream = Files.newInputStream(Paths.get(container.getPath()));
                         } else {
                             zipFile = new ZipFile(container.getPath());
                             String entryName

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java
index fbb963e..4401f1c 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java
@@ -18,8 +18,9 @@
 package org.apache.tools.ant.taskdefs.optional.depend;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
 import java.util.Enumeration;
 import java.util.Stack;
 import java.util.Vector;
@@ -130,8 +131,8 @@ public class DirectoryIterator implements ClassFileIterator {
                     } else {
 
                         // we have a file. create a stream for it
-                        try (FileInputStream inFileStream
-                             = new FileInputStream(element)) {
+                        try (InputStream inFileStream
+                             = Files.newInputStream(element.toPath())) {
                             if (element.getName().endsWith(".class")) {
 
                                 // create a data input stream from the jar

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java
index 158cba9..a987b92 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java
@@ -19,11 +19,10 @@
 package org.apache.tools.ant.taskdefs.optional.ejb;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.nio.file.Files;
 import java.util.Hashtable;
 
 import org.apache.tools.ant.Project;
@@ -192,8 +191,8 @@ public class DescriptorHandler extends org.xml.sax.HandlerBase {
             try {
                 owningTask.log("Resolved " + publicId + " to local file "
                     + dtdFile, Project.MSG_VERBOSE);
-                return new InputSource(new FileInputStream(dtdFile));
-            } catch (FileNotFoundException ex) {
+                return new InputSource(Files.newInputStream(dtdFile.toPath()));
+            } catch (IOException ex) {
                 // ignore
             }
         }

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
index 43b9237..7de0ba3 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
@@ -18,10 +18,9 @@
 package org.apache.tools.ant.taskdefs.optional.ejb;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
 import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.Hashtable;
@@ -327,10 +326,10 @@ public class GenericDeploymentTool implements EJBDeploymentTool {
                                 File inputFile,
                                 String logicalFilename)
         throws BuildException {
-        FileInputStream iStream = null;
+        InputStream iStream = null;
         try {
             if (!addedfiles.contains(logicalFilename)) {
-                iStream = new FileInputStream(inputFile);
+                iStream = Files.newInputStream(inputFile.toPath());
                 // Create the zip entry and add it to the jar file
                 ZipEntry zipEntry = new ZipEntry(logicalFilename.replace('\\', '/'));
                 jStream.putNextEntry(zipEntry);
@@ -514,7 +513,7 @@ public class GenericDeploymentTool implements EJBDeploymentTool {
      */
     protected Hashtable parseEjbFiles(String descriptorFileName, SAXParser saxParser)
                             throws IOException, SAXException {
-        FileInputStream descriptorStream = null;
+        InputStream descriptorStream = null;
         Hashtable ejbFiles = null;
 
         try {
@@ -524,7 +523,7 @@ public class GenericDeploymentTool implements EJBDeploymentTool {
              * get hold of all the classfile names for the descriptor.
              */
             descriptorStream
-                = new FileInputStream(new File(config.descriptorDir, descriptorFileName));
+                = Files.newInputStream(new File(config.descriptorDir, descriptorFileName).toPath());
             saxParser.parse(new InputSource(descriptorStream), handler);
 
             ejbFiles = handler.getFiles();
@@ -776,7 +775,7 @@ public class GenericDeploymentTool implements EJBDeploymentTool {
             try {
                 File manifestFile = (File) files.get(MANIFEST);
                 if (manifestFile != null && manifestFile.exists()) {
-                    in = new FileInputStream(manifestFile);
+                    in = Files.newInputStream(manifestFile.toPath());
                 } else {
                     String defaultManifest = "/org/apache/tools/ant/defaultManifest.mf";
                     in = this.getClass().getResourceAsStream(defaultManifest);
@@ -797,7 +796,7 @@ public class GenericDeploymentTool implements EJBDeploymentTool {
 
             // Create the streams necessary to write the jarfile
 
-            jarStream = new JarOutputStream(new FileOutputStream(jarfile), manifest);
+            jarStream = new JarOutputStream(Files.newOutputStream(jarfile.toPath()), manifest);
             jarStream.setMethod(JarOutputStream.DEFLATED);
 
             // Loop through all the class files found and add them to the jar

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java
index 76b61ae..5a6656f 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java
@@ -20,10 +20,11 @@ package org.apache.tools.ant.taskdefs.optional.ejb;
 
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -729,7 +730,7 @@ public class IPlanetEjbc {
                     location = (String) fileDtds.get(publicId);
                     if (location != null) {
                         // closed when the InputSource is closed
-                        inputStream = new FileInputStream(location); //NOSONAR
+                        inputStream = Files.newInputStream(Paths.get(location)); //NOSONAR
                     }
                 }
             } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/ant/blob/af74d1f6/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
index 6495e97..cc1bd90 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
@@ -18,10 +18,9 @@
 package org.apache.tools.ant.taskdefs.optional.ejb;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Iterator;
@@ -496,9 +495,8 @@ public class WeblogicDeploymentTool extends GenericDeploymentTool {
                 DescriptorHandler handler
                     = getWeblogicDescriptorHandler(ejbDescriptor.getParentFile());
 
-                saxParser.parse(new InputSource
-                    (new FileInputStream(weblogicDD)),
-                        handler);
+                saxParser.parse(new InputSource(Files.newInputStream(weblogicDD.toPath())),
+                                handler);
 
                 Hashtable ht = handler.getFiles();
                 Enumeration e = ht.keys();
@@ -810,7 +808,7 @@ public class WeblogicDeploymentTool extends GenericDeploymentTool {
                         newWLJarFile.delete();
                     }
 
-                    newJarStream = new JarOutputStream(new FileOutputStream(newWLJarFile));
+                    newJarStream = new JarOutputStream(Files.newOutputStream(newWLJarFile.toPath()));
                     newJarStream.setLevel(0);
 
                     //Copy files from old weblogic jar