java使用NIO读入大文件
来源:互联网 发布:分布式数据库设计案例 编辑:程序博客网 时间:2024/06/07 01:54
public static ArrayList<String> readBigFileUseNIO(String filePath) throws IOException{//NIO相比普通的IO,多的内容在于指定缓冲区和通道。这种和底层直接交互的流操作方式,相比普通流而言,在效率上有所提升。FileInputStream fis=new FileInputStream(filePath);//java.ioFileChannel fcin=fis.getChannel();//java.nio,用来操作文件ByteBuffer buf=ByteBuffer.allocate(fis.available());//java.nio,1024*1024*500申请500M的缓冲池//int num=0;while(true){buf.clear();//写入buf前的清理工作int flag=fcin.read(buf);if(flag==-1)break;buf.flip();//读出buf前的准备工作//FileOutputStream fos=new FileOutputStream("D:/"+(num++)+".txt");//大文件剪成几个小文件存起来//FileChannel fcout=fos.getChannel();////fcout.write(buf);}////////////////////////////////////////ByteArrayInputStream stream = new ByteArrayInputStream(buf.array());//java.ioBufferedReader br = new BufferedReader(new InputStreamReader(stream)); //java.io ArrayList<String> res=new ArrayList<String>();String line = br.readLine(); while(line != null) {line=line.trim(); if(line.length()>1){System.out.println("【line】"+line);res.add(line);}line = br.readLine();}//////////////////////////////////////////return res;}
Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。
Java NIO: Channels and Buffers(通道和缓冲区)
标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。
Java NIO: Asynchronous IO(异步IO)
Java NIO可以让你异步的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似。
Java NIO: Selectors(选择器)
Java NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。
下面是Java NIO系列文章的目录:
- Java NIO概述
- Java NIO Channel
- Java NIO Buffer
- Java NIO Scatter / Gather
- Java NIO 通道之间的数据传输
- Java NIO Selector
- Java NIO FileChannel
- Java NIO SocketChannel
- Java NIO ServerSocketChannel
- Java NIO DataGramChannel
- Java NIO Pipe
- Java NIO 与IO
- java使用NIO读入大文件
- JAVA NIO 大文件读取
- java nio 拆分大文件
- JAVA NIO SOCKET大文件上传服务器
- java 通过nio包解析大文件
- iOS开发——使用NSInputStream逐行读入大文件
- Java 文件读入方法
- java读入文件方法
- NIO 读大文件
- 使用NIO读取文件 Java实现案例
- JAVA之NIO按行读取大文件
- Java NIO内存映射---上G大文件处理
- 大数据量的文件读写 java nio的完全发挥
- Java NIO内存映射---上G大文件处理
- Java中用内存映射NIO处理大文件
- java读入输出文件字符串
- java读入文件的方法
- iOS开发——使用NSInputStream逐行读入大文件(2)
- 内核对象理解
- android几种定时器机制及区别
- 细谈SetButtonInfo函数及其用途
- poj 4045 Power Station (树形dp)
- 谈一谈SQL Server中的执行计划缓存(上)
- java使用NIO读入大文件
- HDU 2028 Lowest Common Multiple Plus (Stein算法 求最大公约数)
- 130809
- 一步一步从二叉查找树学到红黑树
- HDU 3015
- 基于Android中实现定时器的3种解决方法
- 16进制数组转字符串
- HDU 2075 A|B?
- Linux进程状态解析之R、S、D、T、Z、X