【NIO】通过FileChannel读取包含中文内容的文件

来源:互联网 发布:js syntax error 编辑:程序博客网 时间:2024/06/08 00:56
直接上代码:
package com.xx.nio;import java.io.File;import java.io.FileInputStream;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.channels.FileChannel;import java.nio.charset.Charset;import java.nio.charset.CharsetDecoder;public class ChannelTest {public static void main(String[] args) throws Exception {String path = ChannelTest.class.getResource("/").getPath();FileInputStream fis = new FileInputStream(new File(path + "nio-test.txt"));FileChannel channel = fis.getChannel();/* * Java.nio.charset.Charset处理了字符转换问题。 * 它通过构造CharsetEncoder和CharsetDecoder将字符序列转换成字节和逆转换。 */Charset charset = Charset.forName("UTF-8");CharsetDecoder decoder = charset.newDecoder();ByteBuffer buffer = ByteBuffer.allocate(128);CharBuffer charBuffer = CharBuffer.allocate(128);int i = channel.read(buffer);while(i != -1){buffer.flip(); // 切换到读模式decoder.decode(buffer, charBuffer, false);charBuffer.flip(); // 切换到读模式while(charBuffer.hasRemaining()){char c = charBuffer.get();System.out.print(c);}charBuffer.clear();buffer.clear();i = channel.read(buffer);}channel.close();fis.close();}}



0 0
原创粉丝点击