javase-NIO
生活随笔
收集整理的這篇文章主要介紹了
javase-NIO
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JDK1.4引入了java.nio.*包,用以提高IO操作的性能。
下面做個試驗測試拷貝一個59M的文件,使用不緩沖的FileInoutStream,帶緩沖的BufferedFileInputStream,nio包中的FileChannel和ByteBuffer。
代碼:
public class FileCopy {public static final int BSIZE = 1024;public static void main(String[] args) {String fileFrom = "D:" + File.separator + "操作系統" +File.separator+ "week9_文件系統" +File.separator+ "video.mp4";String fileTo = "D:" + File.separator + "操作系統" +File.separator+ "week9_文件系統" +File.separator+ "videoCopy.mp4";long startMill;long endMill;startMill = System.currentTimeMillis();copyWithNio(fileFrom, fileTo);endMill = System.currentTimeMillis();System.out.println("use " + (endMill - startMill) / 1000 + "s");}public static void copyWithNoBuffer(String from, String to) {try {FileInputStream fr = new FileInputStream(from);FileOutputStream fw = new FileOutputStream(to);int i;while ((i = fr.read()) != -1) {fw.write(i);}fr.close();fw.close();System.out.println("end of copy");} catch (IOException e) {e.printStackTrace();}}public static void copyWithBuffer(String from, String to) {try {BufferedInputStream bis = new BufferedInputStream(new FileInputStream(from));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(to));int i;while ((i = bis.read()) != -1) {bos.write(i);}bis.close();bos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void copyWithNio(String from, String to) {try {FileChannel in = new FileInputStream(from).getChannel();FileChannel out = new FileOutputStream(to).getChannel();ByteBuffer bb = ByteBuffer.allocate(BSIZE);while (in.read(bb) != -1) {bb.flip();out.write(bb);bb.clear();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }結論:
從結論看,Nio的性能提升是很明顯的。
轉載于:https://www.cnblogs.com/gatsbydhn/p/5287115.html
總結
以上是生活随笔為你收集整理的javase-NIO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读书笔记第一二章
- 下一篇: android开发之当设置textvie