Channel的使用
2024-08-30 10:59:08
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的内容
最新文章
- JNI开发的常见错误
- 从零开始学 Java - CentOS 安装 JDK
- Eclipse InstaSearch搜索词法 (很多并不支持)
- 淘宝分布式NOSQL框架:Tair
- Capture Current Soft Screen
- 疯狂Android讲义 - 学习笔记(二)
- 云服务器 ECS Linux 系统盘数据转移方法
- win7共享wifi
- Maximum number of WAL files in the pg_xlog directory (1)
- servlet学习笔记二
- oracle创建表空间、创建用户、授权、夺权、删除用户、删除表空间
- 神经网络指南Hacker's guide to Neural Networks
- vs 2005中解决找不到模板项
- UVa 400 (水题) Unix ls
- 【二叉树->;链表】二叉树结构转双向线性链表结构(先序遍历)
- Maven安装配置【WIN10】
- scp远程拷贝文件及文件夹
- c++17 代码你能看懂吗?
- Angular2 ng2 如何配置惰性加载
- 牛客练习赛13E 乌龟跑步
热门文章
- adb的经常使用命令(android debud bridge)
- 【BZOJ1520】[POI2006]Szk-Schools KM算法
- EasyPlayer iOS开源流媒体播放器中AAC解码PCM问题
- Boosting AdaBoosting Algorithm
- 美化你的APP——从Toolbar開始
- Spring boot框架项目,使用maven命令将配置文件打包到jar包外,项目运行读取jar外配置文件
- 在react jsx中,为什么使用箭头函数和bind容易出现问题
- python基础知识踩点
- jzyz集训 0228
- js获取浏览器宽高、网页宽高、屏幕宽高、鼠标位置等(带图片说明)