From 7c9510bebbb27fd3120cc849312789a7bc27d55d Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Wed, 27 Jun 2018 19:01:23 +0800 Subject: [PATCH] auto commit --- notes/Java IO.md | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/notes/Java IO.md b/notes/Java IO.md index 78cc7814..bd7a27d5 100644 --- a/notes/Java IO.md +++ b/notes/Java IO.md @@ -323,34 +323,21 @@ I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重 以下展示了使用 NIO 快速复制文件的实例: ```java -public class FastCopyFile { - public static void main(String args[]) throws Exception { - String inFile = "file/abc.txt"; - String outFile = "file/abc-copy.txt"; - // 获得源文件的输入字节流 - FileInputStream fin = new FileInputStream(inFile); - // 获取输入字节流的文件通道 - FileChannel fcin = fin.getChannel(); - // 获取目标文件的输出字节流 - FileOutputStream fout = new FileOutputStream(outFile); - // 获取输出字节流的通道 - FileChannel fcout = fout.getChannel(); - // 为缓冲区分配 1024 个字节 - ByteBuffer buffer = ByteBuffer.allocateDirect(1024); - while (true) { - // 从输入通道中读取数据到缓冲区中 - int r = fcin.read(buffer); - // read() 返回 -1 表示 EOF - if (r == -1) { - break; - } - // 切换读写 - buffer.flip(); - // 把缓冲区的内容写入输出文件中 - fcout.write(buffer); - // 清空缓冲区 - buffer.clear(); +public static void fastCopy(String src, String dist) throws IOException +{ + FileInputStream fin = new FileInputStream(src); /* 获得源文件的输入字节流 */ + FileChannel fcin = fin.getChannel(); /* 获取输入字节流的文件通道 */ + FileOutputStream fout = new FileOutputStream(dist); /* 获取目标文件的输出字节流 */ + FileChannel fcout = fout.getChannel(); /* 获取输出字节流的通道 */ + ByteBuffer buffer = ByteBuffer.allocateDirect(1024); /* 为缓冲区分配 1024 个字节 */ + while (true) { + int r = fcin.read(buffer); /* 从输入通道中读取数据到缓冲区中 */ + if (r == -1) { /* read() 返回 -1 表示 EOF */ + break; } + buffer.flip(); /* 切换读写 */ + fcout.write(buffer); /* 把缓冲区的内容写入输出文件中 */ + buffer.clear(); /* 清空缓冲区 */ } } ```