原文地址:http://www.blogjava.net/landon/archive/2010/12/20/341197.html
把一个大文件切割成多个小文件
package chow.nio;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class ReadLargeTextNio {
/**
*
* 用NIO读取大文本(1G以上)
*
*/
public static void main(String... args) throws IOException {
FileInputStream fin = new FileInputStream("C:/xmlDir2/20m.xml");
FileChannel fcin = fin.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024 * 1); //1M
int count = 1;
while (true) {
buffer.clear();
int flag = fcin.read(buffer);
if (flag == -1) {
break;
}
buffer.flip();
FileOutputStream fout = new FileOutputStream("c:\\xmlDir2\\" + count
+ ".xml");
FileChannel fcout = fout.getChannel();
fcout.write(buffer);
System.out.println("create file " + count);
count++;
}
}
}
分享到:
相关推荐
为了解决这个问题,Java引入了New Input/Output (NIO) 模型,它提供了非阻塞I/O操作,使得在处理大文件时更加高效。本文将深入探讨如何使用NIO处理大文件,并分析其背后的机制和优势。 1. NIO简介: NIO是Java 1.4...
相较于传统的Java IO,NIO具有更高的性能和更丰富的功能,尤其适合处理大文件或高并发场景。 #### 二、Java NIO关键组件 Java NIO的核心组件包括: - **Channels**:用于表示IO源或目标的一个连接点。 - **Buffers*...
- 对大文件,可以考虑分块传输,每块单独处理,提高并发性。 - 添加错误处理和重试机制,确保文件上传的可靠性。 总的来说,基于NIO实现的多文件上传源码充分利用了NIO的非阻塞特性和并发能力,提高了文件传输效率...
本类,是专门为了处理大文件,按行读取开发的类。 采用读文件的缓存 fbb 1024*5 行缓存 bb 256 字节 设计思想: 每次通过nio读取字节到 fbb中 然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件结束 ...
本类,是专门为了处理大文件,按行读取开发的类。 采用读文件的缓存 fbb 1024*5 行缓存 bb 256 字节 设计思想: 每次通过nio读取字节到 fbb中 然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件...
使用nio byteBuffer 实现按行读取文件(大文件) 在window/linux/macOS上均测试通过 对于中文乱码也已处理成功 完整注释,可随需求更改 有问题请邮件:mly610865580@126.com
PFT(可能指的是文件传输或处理服务)在本场景中可能是通过JAVA NIO实现的一个功能模块,用于提供文件的上传、下载和列表展示服务。 文件服务是任何应用程序中不可或缺的部分,尤其是在Web环境中。在JAVA NIO中,...
但需要注意的是,内存映射文件可能会消耗大量内存,因此对于大文件操作要谨慎使用。 5. **选择器(Selectors)** 当需要同时处理多个文件写入操作时,Java NIO的选择器可以派上用场。选择器允许你在一个单独的线程...
Java NIO(New IO)是Java 1.4版本引入的一个新模块,它提供了一种新的方式来处理I/O操作,相比传统...通过理解其核心组件和操作机制,开发者可以充分利用NIO来优化文件读写性能,尤其是在高并发和大文件处理的场景下。
在本篇文章中,我们将深入探讨Java NIO如何读取文件。 一、NIO的基本概念 1. 缓冲区(Buffer):NIO的核心组件,用于存储数据。Java提供了多种Buffer类,如ByteBuffer、CharBuffer、IntBuffer等,分别对应不同数据...
开发者可以根据实际需求选择合适的方法,例如,如果需要处理大量的并发I/O请求,或者处理大文件,NIO可能是更好的选择;而对于简单的小规模文件操作,传统的IO可能更简洁直观。通过分析和实践这两个版本的代码,可以...
简单的用Java的NIO读取文件的程序,给大家参考。
综上所述,“Large-File-Processing-master_javanio_java大文件处理_”项目涵盖了Java NIO在大文件处理中的核心技术和最佳实践,是学习和研究Java高效处理大文件的宝贵资源。通过深入理解这些知识点,并结合项目中的...
1. **FileChannel**:`java.nio.channels.FileChannel`是用于读写文件的通道,可以从一个文件通道向另一个文件通道直接传输数据,避免了中间缓冲区的开销。在文件复制中,我们通常使用`transferTo()`和`transferFrom...
这个文件很可能是一个示例程序,演示了如何使用Java NIO进行高效的大文件复制。在传统的Java I/O中,我们通常使用InputStream和OutputStream进行文件复制,而这种方式需要不断读写,造成大量的上下文切换,效率较低...
文件切割的过程是将一个大文件分成多个小文件。以下是一个简单的步骤概述: 1. 打开原始文件:使用FileInputStream打开要切割的文件。 2. 设置切割大小:确定每个切割文件的大小。 3. 循环读取:使用read()方法从...
4. **FileChannel**:用于文件的读写,可以实现大文件的高效传输,支持内存映射(Mmap)技术,能直接将文件映射到内存中。 5. **SocketChannel**:用于网络通信,可以建立TCP连接,进行非阻塞的读写。在`NIOServer....
Java NIO(New IO)是Java 1.4引入的一个新特性,它是对传统IO模型的重大改进,提供了更高效的数据处理方式。NIO的核心概念包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。它允许多个输入/输出操作...
通过MappedByteBuffer类,可以直接在内存中对文件进行操作,提高大文件处理的性能。 7. **管道(Pipes)**: 管道用于在两个线程间创建单向数据通道,它们并不直接与任何外部资源关联,而是线程间的通信工具。 总...