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(); } } }
源码放在:
相关推荐
使用nio byteBuffer 实现按行读取文件(大文件) 在window/linux/macOS上均测试通过 对于中文乱码也已处理成功 完整注释,可随需求更改 有问题请邮件:mly610865580@126.com
在这个例子中,`ReadFromFile`类中包含两种读取文件的方法:一种是以字节为单位,另一种是以字符为单位。 1. **以字节为单位读取文件**: - `readFileByBytes`方法展示了如何使用`FileInputStream`读取文件。首先...
在本篇文章中,我们将探讨几种针对大文件读取的有效策略,以确保程序性能不受影响,同时兼顾内存管理和资源优化。这里以读取5GB的TXT文件为例,讲解如何实现这一目标。 首先,我们需要理解的是,一次性加载整个大...
使用`java.nio.FileChannel`类创建一个文件通道,这允许我们以非阻塞的方式读取文件。通过`Files.newByteChannel()`方法可以从`java.nio.file.Paths`中获取文件通道。 ```java FileChannel fileChannel = Files....
以下是对Java读取文件的五种方法的详细说明,每种方法都有相应的代码示例: 1. **按字节读取文件内容** 这种方法适用于读取二进制文件,如图片、音频或视频文件。通过`FileInputStream`类,我们可以一次读取一个...
- 对于大文件,考虑使用`FileChannel`进行分块读写。 - 使用`try-with-resources`语句自动管理资源关闭。 以上就是Android平台上的文件读写操作的基本方法和注意事项。通过了解这些知识,开发者可以有效地在Android...
本篇文章将详细介绍四种不同的方法来读取文件内容,包括按字节、字符、行以及随机读取。 1. **按字节读取文件内容**: 这种方法适用于读取任何类型的文件,包括二进制文件。如`FileInputStream`类用于按字节读取...
内存映射文件是一种将文件内容直接映射到内存中的技术,使得对文件的操作如同操作内存一样简单高效。下面结合给定的部分代码片段,详细解释如何使用Java NIO读取超大数据文件: 1. **初始化配置** - **定义文件...
另一种高效读取大文件的方法是通过`FileChannel`和`ByteBuffer`的组合。这种方式也支持随机访问,并且可以通过调整缓冲区大小来适应不同的内存限制。 示例代码中演示了如何使用`ByteBuffer`和`FileChannel`读取文件...
在Java编程语言中,处理二进制文件是常见...通过这些方法,开发者可以在Java中有效地读取和写入二进制文件,实现对各种非文本数据的处理和存储。实际应用中,还可以结合其他数据结构和算法,构建更复杂的文件处理功能。
这段代码创建了一个`BufferedReader`实例,通过`readLine()`方法逐行读取文本文件,并将其打印出来。记得在读写操作完成后,一定要调用`close()`方法关闭流,以释放系统资源。 对于文件写入,`PrintWriter`和`...
通过这种方法,Java程序能够高效地处理大文件,避免一次性加载整个文件导致的内存问题,同时通过缓冲区和内存映射文件优化了读取性能。这种方法尤其适用于处理非常大的文件,如日志文件或大数据分析中的文件。
通过上述分析可以看出,使用Java NIO来处理大文件是一种高效且灵活的方法。通过合理的代码设计和性能优化策略,可以极大地提高处理大文件的速度。希望本文能够帮助开发者更好地理解和应用Java中的大文件读取技术。
读写文件时,确保正确设置文件编码,避免乱码问题;如果多个进程同时修改同一个文件,可能需要文件锁来协调。 总之,IO文件读取是程序开发的基础技能,理解并熟练掌握不同的读取方式和处理策略,有助于编写高效、...
在Java NIO(New IO)框架下,文件流管道(Pipe)是一种用于在两个线程之间传递数据的机制,它允许一个线程写入数据,而另一个线程读取这些数据。文件通道(FileChannel)是与文件交互的主要接口,它提供了管道传输...
本资源主要讲解了高效率文件复制的java实现方法,包含了两种不同的实现方式,分别使用java io流和FileChannel来实现文件复制操作。 知识点1:Java IO流文件复制 在第一个实现方法中,我们使用了Java IO流来实现...
经过对Flume FileChannel相关源码的分析,导致FileChannel吞吐率下降的主要原因集中于事务的提交过程——commit
在这个例子中,我们创建了一个`FileChannel`实例用于写入合并后的文件,然后遍历所有输入文件,使用`FileChannel`读取每个文件的内容,并写入到输出文件中。 **3. FileUtils类** 在给定的`FileUtils`文件名列表中,...
5. **文件操作注意事项**:为了保证文件操作的原子性,避免数据丢失,建议使用`FileChannel`的`transferFrom()`和`transferTo()`方法,或者使用`RandomAccessFile`进行大文件的读写。 四、SaveRead文件示例 在给定...
内存映射文件是一种特殊的文件处理方式,它能够将文件的一部分或者全部映射到内存地址空间中,从而允许程序像访问内存一样读写文件中的数据。这种方法特别适合处理大文件,因为它可以减少文件I/O操作,提高读写效率...