Java-nio :Demo
程序员文章站
2022-03-03 20:12:43
...
一.关于nio基础的Demo:
package com.nio;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
/**
* @author mojiayi
* @date 2018-12-10 17:39
*/
public class FirstDay {
/**
* @author JackLi
* @date 2018-12-10
利用nio读取文件内容
解决中文乱码问题
* @return void
* @throws IOException
* @since
*/
public static void main(String[] args) throws IOException {
//创建字符集编码对象
Charset charset = Charset.forName("GBK");
//通过编码对象获取指定的解码构造器
CharsetDecoder decoder = charset.newDecoder();
//RandomAccessFile 用于随机读取文件
RandomAccessFile file = new RandomAccessFile("C:/Users/李玮/Desktop/新建文本文档.txt","rw");
//通过RandomAccessFile 得到 channel 管道
FileChannel channel = file.getChannel();
//定义一个 48 字节大小的缓冲区接受管道中的内容
ByteBuffer byteBuffer = ByteBuffer.allocate(48);
//定义 CharBuffer 接收解码构造器解码 ByteBuffer 后的内容
CharBuffer charBuffer = CharBuffer.allocate(48);
//开始读取
int byteRead = channel.read(byteBuffer);
while (byteRead != -1){
//System.out.print(byteRead);
byteBuffer.flip();
while (byteBuffer.hasRemaining()) {
//解码器解码
decoder.decode(byteBuffer, charBuffer, true);
//转换至读模式
charBuffer.flip();
System.out.println(charBuffer);
}
charBuffer.clear();
byteBuffer.clear();
byteRead = channel.read(byteBuffer);
}
channel.close();
file.close();
}
}
上一篇: 达梦数据库快速安装
下一篇: 达梦数据库基础---序列
推荐阅读
-
C#如何对多线程、多任务管理(demo)
-
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
-
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
-
秒杀99.99%显卡 NVIDIA杀手级Demo来了(介绍视频/下载地址)
-
枚举类(Enum)的使用Demo
-
CefSharp 修复Demo无法在其它路径下启动问题
-
Android异步下载图片并且缓存图片到本地DEMO详解
-
使用CSS3制作一个简单的进度条(demo)
-
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
-
微信小程序五子棋游戏AI实现方法【附demo源码下载】