Channel必须要通过buffer来读写

1. Channel需要通过IO流的getChannel()方法获取

2. buffer需要通过Channel的map()方法获取

package com.io.channel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.CharBuffer;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder; public class ChannelB { public static void main(String[] args) { String path = "E:\\fitnesse\\workspace\\javaio\\resource\\";
String nameFilePath = path + "name.txt";
String copyFilePath = path + "copy.txt"; File nf = new File(nameFilePath);
File cf = new File(copyFilePath); //第一步获取Channel,有很多种Channl,这里使用到的是FileChannel
try(FileChannel inChannel = new FileInputStream(nf).getChannel();
FileChannel outChannel = new FileOutputStream(cf).getChannel())
{
//从name.txt中读取内容到buffer中
MappedByteBuffer buffer = inChannel.map(FileChannel.MapMode.READ_ONLY , 0 , nf.length()); //将从name.txt中读取的内容写入到copy.txt
outChannel.write(buffer);
buffer.clear(); //设置编码和解码器
Charset charset = Charset.forName("GBK");
CharsetDecoder decoder = charset.newDecoder();
CharBuffer charBuffer = decoder.decode(buffer);
System.out.println(charBuffer); } catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} }

name.txt文件内容

执行程序后输出的内容

1231542155112221
45444545454454545
41511111111111111111111111111111
88888888888888888888888888888888888888

copy.txt的内容

最新文章

  1. JNI开发的常见错误
  2. 从零开始学 Java - CentOS 安装 JDK
  3. Eclipse InstaSearch搜索词法 (很多并不支持)
  4. 淘宝分布式NOSQL框架:Tair
  5. Capture Current Soft Screen
  6. 疯狂Android讲义 - 学习笔记(二)
  7. 云服务器 ECS Linux 系统盘数据转移方法
  8. win7共享wifi
  9. Maximum number of WAL files in the pg_xlog directory (1)
  10. servlet学习笔记二
  11. oracle创建表空间、创建用户、授权、夺权、删除用户、删除表空间
  12. 神经网络指南Hacker's guide to Neural Networks
  13. vs 2005中解决找不到模板项
  14. UVa 400 (水题) Unix ls
  15. 【二叉树->链表】二叉树结构转双向线性链表结构(先序遍历)
  16. Maven安装配置【WIN10】
  17. scp远程拷贝文件及文件夹
  18. c++17 代码你能看懂吗?
  19. Angular2 ng2 如何配置惰性加载
  20. 牛客练习赛13E 乌龟跑步

热门文章

  1. adb的经常使用命令(android debud bridge)
  2. 【BZOJ1520】[POI2006]Szk-Schools KM算法
  3. EasyPlayer iOS开源流媒体播放器中AAC解码PCM问题
  4. Boosting AdaBoosting Algorithm
  5. 美化你的APP——从Toolbar開始
  6. Spring boot框架项目,使用maven命令将配置文件打包到jar包外,项目运行读取jar外配置文件
  7. 在react jsx中,为什么使用箭头函数和bind容易出现问题
  8. python基础知识踩点
  9. jzyz集训 0228
  10. js获取浏览器宽高、网页宽高、屏幕宽高、鼠标位置等(带图片说明)