Mega Code Archive

 
Categories / Java / File Input Output
 

File Copy in Java with NIO

package com.rntsoft.tools.dev; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.channels.FileChannel; class NioBenchmark1 {   static int size = 60; // MB   static int tests = 5;   interface Copier {     public void copy(File s, File t) throws IOException;   }   static class NioCopier implements Copier {     public void copy(File s, File t) throws IOException {       FileChannel in = (new FileInputStream(s)).getChannel();       FileChannel out = (new FileOutputStream(t)).getChannel();       in.transferTo(0, s.length(), out);       in.close();       out.close();     }   }   static class IoCopier implements Copier {     final int BUFF_SIZE = 5 * 1024 * 1024; // 5MB     final byte[] buffer = new byte[BUFF_SIZE];     public void copy(File s, File t) throws IOException {       InputStream in = new FileInputStream(s);       FileOutputStream out = new FileOutputStream(t);       while (true) {         int count = in.read(buffer);         if (count == -1)           break;         out.write(buffer, 0, count);       }       out.close();       in.close();     }   }   public static void main(String[] arg) throws IOException {     Copier io = new IoCopier();     Copier nio = new NioCopier();     nio.copy(new File("s"), new File("t"));     io.copy(new File("s"), new File("t"));   } }