importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.RandomAccessFile;
importjava.nio.MappedByteBuffer;
importjava.nio.channels.FileChannel;
publicclassNIOTest {
privatestaticinttimes= 2000000;
privatestaticStringdata="#2015-5-20 14:38:00 revoke() method is invoked...\r\n";;
privatestaticbyte[]bytes=data.getBytes();
publicstaticvoidensureNewFileExist(String filename) {
File file =newFile(filename);
file.deleteOnExit();
try{
file.createNewFile();
}catch(IOException e) {
//TODOAuto-generated catch block
e.printStackTrace();
System.out.println(e.toString());
}
}
publicstaticvoidfileOutputStream(String filename)throwsIOException {
// usefileoutputstream
FileOutputStream fos =newFileOutputStream(filename);
for(inti = 0; i
fos.write(bytes);
}
fos.flush();
fos.close();
}
publicstaticvoidbufferedOutputStream(String filename)throwsIOException {
// use BufferedOutputStream
FileOutputStream fos =newFileOutputStream(filename);
BufferedOutputStream bos =newBufferedOutputStream(fos);
for(inti = 0; i
bos.write(bytes);
}
bos.flush();
bos.close();
fos.flush();
fos.close();
}
publicstaticvoidrandomAccessFile(String filename)throwsIOException {
// use random access file
RandomAccessFile file =newRandomAccessFile(filename,"rw");
for(inti = 0; i
file.write(bytes);
}
file.close();
}
publicstaticvoidmappedFile(String filename)throwsIOException {
// use mapped file
// FileOutputStreamfos= new FileOutputStream(filename);
RandomAccessFile out =newRandomAccessFile(filename,"rw");
FileChannel channel = out.getChannel();
longsize = 200 * 1024 * 1024;
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, size);
for(inti = 0; i
buffer.put(bytes);
}
channel.close();
out.close();
}
publicstaticvoidmain(String[] args)throwsIOException {
// 1 File Output Stream
System.out.println("File Output Stream");
String filename ="./1_file_Output_Stream.txt";
ensureNewFileExist(filename);
longstart = System.currentTimeMillis();
fileOutputStream(filename);
longend = System.currentTimeMillis();
System.out.println((end - start) +" milliseconds\n");
// 2 Buffered Output Stream
System.out.println("Buffered File Output Stream");
filename ="./2_buffered_File_Output_Stream.txt";
ensureNewFileExist(filename);
start = System.currentTimeMillis();
bufferedOutputStream(filename);
end = System.currentTimeMillis();
System.out.println((end - start) +" milliseconds\n");
// 3 Random Access File
System.out.println("Random Access Output Stream");
filename ="./3_random_access_Output_Stream.txt";
ensureNewFileExist(filename);
start = System.currentTimeMillis();
randomAccessFile(filename);
end = System.currentTimeMillis();
System.out.println((end - start) +" milliseconds\n");
// 4 Mapped File
System.out.println("Mapped Output Stream");
filename ="./4_mapped_Output_Stream.txt";
ensureNewFileExist(filename);
start = System.currentTimeMillis();
mappedFile(filename);
end = System.currentTimeMillis();
System.out.println((end - start) +" milliseconds");
}
}
------------------------------------------测试结果如下:
看来还是比较快的。