http://www.techscore.com/tech/J2SE/NIO/index.html
http://www.javainthebox.net/laboratory/JDK1.4/contents.html
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class test {
public static void main(String[] args){
new test();
}
public test(){
copyFileByStream("data.dat", "data_stream.dat");
copyFileByChannel("data.dat", "data_channels.dat");
}
public void copyFileByChannel(String srcFilename, String destFilename){
try{
FileChannel in = (new FileInputStream(srcFilename)).getChannel();
FileChannel out = (new FileOutputStream(destFilename)).getChannel();
long start = System.currentTimeMillis();
ByteBuffer buffer = ByteBuffer.allocateDirect(10000000);
while (true) {
buffer.clear();
if(in.read(buffer) < 0){
break;
}
buffer.flip();
out.write(buffer);
}
long end = System.currentTimeMillis();
System.out.println("Total time = " + (end-start));
out.close();
in.close();
}catch(FileNotFoundException ex){
ex.printStackTrace();
}catch(IOException ex){
ex.printStackTrace();
}
}
public void copyFileByStream(String srcFilename, String destFilename){
try{
// InputStream in = new FileInputStream(srcFilename);
// OutputStream out = new FileOutputStream(destFilename);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(srcFilename));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(destFilename));
long start = System.currentTimeMillis();
byte[] buffer = new byte[10000000];
int n;
while ((n = in.read(buffer)) != -1) {
out.write(buffer, 0, n);
}
out.flush();
long end = System.currentTimeMillis();
System.out.println("Total time = " + (end-start));
out.close();
in.close();
}catch(FileNotFoundException ex){
ex.printStackTrace();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
{{category2 プログラミング言語,Java}}