<< Previous | Table of Categories | Next >> |
Java 7 has a new generation of NIO which is NIO2. There are some significant enhancements in NIO2. One of them is the Path API.
/** * Feel free to copy and use this method * If you have any comments or better solutions, please paste on my blog: * http://blog.yanmingyu.com or email me feedback.andrewyu@gmail.com * * When we copy files, there are several options for us now. I think copying with NIO2 * is the easiest one now.(Even though "copyFileWithOSCommand" is the fast one, but it may * not be allowed to use sometimes). */Copy files by using Windows/Liunx/Unix system command
public static void copyFileWithOSCommand(String sourceFilename, String targetFilename) throws IOException { String cmd = "cmd /C copy "; String os = System.getProperty("os.name"); os = os.toLowerCase(); if(os.indexOf("windows")>=0) { os = "cp "; } cmd = cmd + sourceFilename + " " + targetFilename; Runtime.getRuntime().exec(cmd); }Copy files by using traditional Stream
public static void copyFileWithStream(String sourceFilename, String targetFilename) throws IOException { InputStream in = null; OutputStream out = null; try { in = new FileInputStream(sourceFilename); out = new FileOutputStream(targetFilename); byte[] buf = new byte[4098]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } }Copy files by using the first generation NIO transfer
public static void copyFileWithNIO(String sourceFilename, String targetFilename) throws IOException { FileChannel source = null; FileChannel target = null; try { source = new FileInputStream(sourceFilename).getChannel(); target = new FileOutputStream(targetFilename).getChannel(); target.transferFrom(source, 0, source.size()); } finally { if (source != null) { source.close(); } if (target != null) { target.close(); } } }Copy files by using NIO2 which is provided by Java 7
public static void copyFileWithNIO2(String sourceFilename, String targetFilename) throws IOException { Path source = Paths.get(sourceFilename); Path target = Paths.get(targetFilename); Path copy = Files.copy(source, target); }
No comments:
Post a Comment