【NIO】通过FileChannel读取包含中文内容的文件
2017-04-15 16:53
411 查看
直接上代码:
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(); } }
相关文章推荐
- 使用NIO的FileChannel和ByteBuffer高效读取文件
- 用c#读取文件内容中文是乱码的解决方法
- java读取文件内容(中文文件解决办法)
- Hadoop读取sequencefile和textfile文件内容
- 按字符串读取文件内容NSString stringWithContentsOfFile: (NSString类方法)
- 任何的File.ReadAllText()和使用StreamReader读取文件内容之间的差异?
- FileReader读取文件内容!
- asp.net 按行读取包含中文的文本(txt)文件并取得行数
- 通过URL读取文件内容
- flex调用js写文件时,传递的参数包含中文,读取乱码问题
- 通过java的io流将本地文件读取到控制台,并将文件内容再次写入另一个文件中
- 使用FileReader和FileWriter读取写入文件内容
- 将一个文本文件内容反序打印出来(包含中文时)
- 读取中文文件内容的测试
- 关于读取文件中的中文内容
- 通过NSInputStream读取大文件的指定起始内容
- 读取中文文件内容的测试
- qt读取中文文件内容的测试
- java RandomAccessFile读取文件追加内容
- asp.net 按行读取包含中文的文本(txt)文件并取得行数