package com.lp.liuan; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; 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 FileChannelExample { public static void main(String args[]){ Charset charset = Charset.forName("GBK");//Java.nio.charset.Charset处理了字符转换问题。它通过构造CharsetEncoder和CharsetDecoder将字符序列转换成字节和逆转换。 CharsetDecoder decoder = charset.newDecoder(); FileInputStream fis = null; try { fis = new FileInputStream("E:/学习总结/java乱码本质.txt"); FileChannel fileChannel = fis.getChannel(); ByteBuffer byteBuffer = ByteBuffer.allocate(1024); CharBuffer charBuffer = CharBuffer.allocate(1024); int bytes = fileChannel.read(byteBuffer); while(bytes!=-1){ byteBuffer.flip(); decoder.decode(byteBuffer, charBuffer, false); charBuffer.flip(); System.out.println(charBuffer); charBuffer.clear(); byteBuffer.clear(); bytes = fileChannel.read(byteBuffer); } if(fis!=null){ fis.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
源码放在:
相关推荐
在这个例子中,`ReadFromFile`类中包含两种读取文件的方法:一种是以字节为单位,另一种是以字符为单位。 1. **以字节为单位读取文件**: - `readFileByBytes`方法展示了如何使用`FileInputStream`读取文件。首先...
本篇文章将深入探讨“Java文件编码转换”这一主题,以及如何利用Java进行文件编码的转换,解决在处理文本文件时可能出现的乱码问题。 首先,我们要理解什么是字符编码。字符编码是用来表示文本的一种规则,常见的有...
总结一下,文件锁定在Java NIO中通过`FileChannel`和`FileLock`提供了一种机制,用于保护文件在并发环境下的安全访问。字符集,如`Charset`,则在处理文本数据时起到桥梁作用,确保数据在不同编码格式之间的正确转换...
UTF-8则是一种可变长度的Unicode编码,能表示世界上几乎所有的字符。 在Java中,我们可以使用`java.nio.charset`包下的类来处理编码转换。其中,`Charset`类代表了一种字符集,`CharsetDecoder`和`CharsetEncoder`...
- **FileChannel**: 用于文件的读写操作。 - **SocketChannel**: 用于网络套接字的读写操作。 - **DatagramChannel**: 用于UDP数据报的读写操作。 **2. 使用Channel** - **FileChannel**: 可以通过...
而UTF-8是一种可变长度的Unicode编码,能表示Unicode字符集中所有的字符,包括繁体中文和许多其他语言的字符。 在Java中,处理字符编码通常涉及`java.nio.charset`包下的类,如`Charset`、`CharsetDecoder`和`...