`

Java nio读取文本文件

阅读更多

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 包读取超大数据文件

    内存映射文件是一种将文件内容直接映射到内存中的技术,使得对文件的操作如同操作内存一样简单高效。下面结合给定的部分代码片段,详细解释如何使用Java NIO读取超大数据文件: 1. **初始化配置** - **定义文件...

    JAVA NIO 按行读取大文件支持 GB级别-修正版

    然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件结束 这样字节的判断,然后 返回行 如果 到达 fbb的结尾 还没有结束,就再通过nio读取一段字节,继续处理。 由于对于本程序 116个字节以上的行才有意义...

    JAVA NIO 按行读取大文件,支持 GB级别

    然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件结束 这样字节的判断,然后 返回行 如果 到达 fbb的结尾 还没有结束,就再通过nio读取一段字节,继续处理。 由于对于本程序 116个字节以上的行...

    JAVA NIO 简单PFT 文件服务

    文件下载服务则相反,服务器使用FileChannel读取文件内容,然后通过Socket发送给客户端,客户端接收数据并写入本地文件系统。 文件列表展示服务可能涉及到目录遍历和文件信息的获取。在Java中,可以使用java.nio....

    java NIO实例

    下面将详细介绍Java NIO的主要组件和工作原理,并结合这两个文件名推测它们可能包含的内容。 1. **Selector(选择器)**:选择器是NIO的核心组件,它能够监控多个通道(Channel)的状态变化,当某个通道准备进行...

    Java NIO 中英文版

    - Java NIO提供了一组文件系统操作API,例如FileChannel用于读写文件,MappedByteBuffer实现了内存映射文件,可以直接通过内存访问文件内容,提高了读写速度。 4. **缓冲区的分类** - **ByteBuffer**:用于处理...

    Large-File-Processing-master_javanio_java大文件处理_

    对于大文件处理,内存映射文件是一种高效的策略,尤其是当需要随机访问文件内容时。 4. **通道之间的数据传输**:Java NIO允许直接在通道之间传输数据,无需经过缓冲区,这在处理大文件时降低了额外的数据复制开销...

    java多线程读取文件

    Java多线程读大文件 java多线程写文件:多线程往队列中写入数据

    Java NIO 中英文版 + Pro Java 7 NIO.2

    5. **文件系统操作**:NIO提供FileChannel,可以高效地进行文件读写操作,包括映射文件到内存(MappedByteBuffer)。 6. **管道(Pipes)**:管道是两个线程之间进行单向数据传输的通道,用于线程间通信。 7. **...

    java按行读取大文件并解析入库

    在Java编程中,处理大容量文本文件是一项挑战,因为传统的逐行读取方式可能会消耗大量内存,导致程序崩溃。为了高效地处理这类问题,我们可以利用Java的`java.nio`包中的BufferedReader和FileChannel等类,实现按行...

    nio.zip_NIO_NewIO_NIO.c_java NIO chm_java nio

    `java_nio_chm`指的是包含Java NIO相关内容的CHM(Compiled Help Manual)文件,这是一种Windows下的帮助文档格式,通常包含一系列的章节和索引,方便用户查阅。在这个文档中,你可以找到关于Java NIO类库的详细说明...

    java nio

    4. **文件系统操作**:Java NIO提供了FileChannel和Files类,用于执行文件的读写操作。例如,FileChannel支持映射文件到内存,直接进行内存访问,提高文件操作速度。Files类则提供了一系列静态方法,方便进行文件的...

    java读写csv文件,中文乱码问题

    - 使用`System.out.println()`打印文件内容,观察是否有乱码,以帮助定位问题。 - 使用`java.nio.charset.CharsetDetector`类检测文件的实际编码。 7. **总结**: - 解决Java处理CSV文件时的中文乱码问题,关键...

Global site tag (gtag.js) - Google Analytics