java使用NIO读入大文件

public static ArrayList<String> readBigFileUseNIO(String filePath) throws IOException
	{//NIO相比普通的IO,多的内容在于指定缓冲区和通道。这种和底层直接交互的流操作方式,相比普通流而言,在效率上有所提升。
		FileInputStream fis=new FileInputStream(filePath);//java.io
		FileChannel 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.io
		BufferedReader 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系列文章的目录:

  1. Java NIO概述
  2. Java NIO Channel
  3. Java NIO Buffer
  4. Java NIO Scatter / Gather
  5. Java NIO 通道之间的数据传输
  6. Java NIO Selector
  7. Java NIO FileChannel
  8. Java NIO SocketChannel
  9. Java NIO ServerSocketChannel
  10. Java NIO DataGramChannel
  11. Java NIO Pipe
  12. Java NIO 与IO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值