JDK1.4的java.nio.*包中引入了新的Java I/O类库,其目的在于提高速度。在新I/O中我们需要知道有两个非常重要的对象,那就是通道和缓冲器。唯一与通道交互的缓冲器是ByteBuffer。
1、简单读取文本信息(不支持中文)
FileInputStream in = new FileInputStream("E:/nio/test_en.txt"); FileChannel fc = in.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(1024); StringBuilder text = new StringBuilder(); while (fc.read(buffer) != -1) { buffer.flip(); while (buffer.hasRemaining()) { text.append((char) buffer.get()); } buffer.clear(); } fc.close(); System.out.println(text.toString());
2、那么如何才能支持中文,缓冲器中容纳的是普通字节,需要在缓冲器输出时对字节进行解码。
FileInputStream in = new FileInputStream("E:/nio/test.txt"); FileChannel fc = in.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(2 * 1024); StringBuilder text = new StringBuilder(); while (fc.read(buffer) != -1) { buffer.flip(); // 直接使用会出现乱码 text.append(Charset.forName("GBK").decode(buffer)); // 解码 buffer.rewind(); } buffer.clear(); fc.close(); System.out.println(text.toString());
相关推荐
内存映射文件是一种将文件内容直接映射到内存中的技术,使得对文件的操作如同操作内存一样简单高效。下面结合给定的部分代码片段,详细解释如何使用Java NIO读取超大数据文件: 1. **初始化配置** - **定义文件...
然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件结束 这样字节的判断,然后 返回行 如果 到达 fbb的结尾 还没有结束,就再通过nio读取一段字节,继续处理。 由于对于本程序 116个字节以上的行才有意义...
然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件结束 这样字节的判断,然后 返回行 如果 到达 fbb的结尾 还没有结束,就再通过nio读取一段字节,继续处理。 由于对于本程序 116个字节以上的行...
文件下载服务则相反,服务器使用FileChannel读取文件内容,然后通过Socket发送给客户端,客户端接收数据并写入本地文件系统。 文件列表展示服务可能涉及到目录遍历和文件信息的获取。在Java中,可以使用java.nio....
下面将详细介绍Java NIO的主要组件和工作原理,并结合这两个文件名推测它们可能包含的内容。 1. **Selector(选择器)**:选择器是NIO的核心组件,它能够监控多个通道(Channel)的状态变化,当某个通道准备进行...
- Java NIO提供了一组文件系统操作API,例如FileChannel用于读写文件,MappedByteBuffer实现了内存映射文件,可以直接通过内存访问文件内容,提高了读写速度。 4. **缓冲区的分类** - **ByteBuffer**:用于处理...
对于大文件处理,内存映射文件是一种高效的策略,尤其是当需要随机访问文件内容时。 4. **通道之间的数据传输**:Java NIO允许直接在通道之间传输数据,无需经过缓冲区,这在处理大文件时降低了额外的数据复制开销...
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
5. **文件系统操作**:NIO提供FileChannel,可以高效地进行文件读写操作,包括映射文件到内存(MappedByteBuffer)。 6. **管道(Pipes)**:管道是两个线程之间进行单向数据传输的通道,用于线程间通信。 7. **...
在Java编程中,处理大容量文本文件是一项挑战,因为传统的逐行读取方式可能会消耗大量内存,导致程序崩溃。为了高效地处理这类问题,我们可以利用Java的`java.nio`包中的BufferedReader和FileChannel等类,实现按行...
`java_nio_chm`指的是包含Java NIO相关内容的CHM(Compiled Help Manual)文件,这是一种Windows下的帮助文档格式,通常包含一系列的章节和索引,方便用户查阅。在这个文档中,你可以找到关于Java NIO类库的详细说明...
4. **文件系统操作**:Java NIO提供了FileChannel和Files类,用于执行文件的读写操作。例如,FileChannel支持映射文件到内存,直接进行内存访问,提高文件操作速度。Files类则提供了一系列静态方法,方便进行文件的...
- 使用`System.out.println()`打印文件内容,观察是否有乱码,以帮助定位问题。 - 使用`java.nio.charset.CharsetDetector`类检测文件的实际编码。 7. **总结**: - 解决Java处理CSV文件时的中文乱码问题,关键...