public class FileChannelDemo { public static void main(String[] args) { fileChannelDemo(); } private static void fileChannelDemo() { try { //处理中文乱码 Charset gbk = Charset.forName("GBK"); CharsetDecoder dbkDecoder = gbk.newDecoder(); //1- 定义一个缓冲区 ByteBuffer buff = ByteBuffer.allocate(1024); CharBuffer charBuffer = CharBuffer.allocate(1024); //2- 通过文件输入流获得文件通道对象(读取操作) FileInputStream fileInputStream = new FileInputStream("e://a.txt"); FileChannel inChannel = fileInputStream.getChannel(); //3- 通过文件输出流追加文件内容 FileOutputStream fileOutputStream = new FileOutputStream("e://b.txt",true); FileChannel outChannel = fileOutputStream.getChannel(); //4- 读取数据 buff.clear(); int len = inChannel.read(buff); System.out.println("len == " + len); buff.flip(); dbkDecoder.decode(buff,charBuffer,false); String data = new String(charBuffer.array(),0,len); System.out.println(data); //5- 关闭输入流 inChannel.close(); //6- 写数据 buff.flip(); buff.clear(); buff = ByteBuffer.wrap(data.getBytes("GBK"),0,data.length()); outChannel.write(buff); //7- 关闭输出流 outChannel.close(); } catch (Exception e) { } } }
NIO 之 文件通道操作
最新推荐文章于 2021-02-26 23:37:56 发布