`
zhaohaolin
  • 浏览: 984977 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

NIO之轻松读取大文件

    博客分类:
  • JAVA
 
阅读更多

011-01-07 13:44 来自 admin NIO轻松读取大文件(1G以上)

01 import java.io.FileInputStream;
02 import java.io.FileOutputStream;
03 import java.io.IOException;
04 import java.nio.ByteBuffer;
05 import java.nio.channels.FileChannel;
06 /**
07   *
08   * 用NIO读取大文本(1G以上)
09   *
10   * @author landon
11   *
12   */
13 public class ReadLargeTextWithNIO
14 {
15   public static void main(String...args) throws IOException
16   {
17    FileInputStream fin = new FileInputStream( "d:\\temp\\outlineA1.log" );
18    FileChannel fcin = fin.getChannel();
19     
20    ByteBuffer buffer = ByteBuffer.allocate( 1024 * 1024 * 50 );
21     
22    while ( true )
23    {
24     buffer.clear();
25      
26     int flag = fcin.read(buffer);
27      
28     if (flag == - 1 )
29     {
30      break ;
31     }
32      
33     buffer.flip();
34      
35     FileOutputStream fout = new FileOutputStream( "d:\\temp\\" + Math.random() + ".log" );
36     FileChannel fcout = fout.getChannel();
37      
38     fcout.write(buffer);
39    }
40   }
41 }
42  
43 下面简单说几个注意的地方:
44 a.因为要把超大文本切分成小的部分,所以分配buffer的时候尽量大一些,这里我分配的大小是50M,不过如果太大了,可能会报内存溢出。
45 b.说一下clear和flip的方法,直接上源码:
46 public final Buffer clear()
47 {
48 position = 0 ;
49 limit = capacity;
50 mark = - 1 ;
51 return this ;
52 }
53  
54 public final Buffer flip()
55 {
56 limit = position;
57 position = 0 ;
58 mark = - 1 ;
59 return this ;
60 }
61 一看便知二者的区别。
62 c.跳出循环也即读完的判断是read返回的flag是- 1
分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...

    基础深化和提高-IO流技术学习大全

    I/O流技术提供了丰富的功能和特性,使得开发者能够轻松地进行文件的读写、网络通信、处理数据等操作。另外,Java还提供了一些高级的流类,如缓冲流、对象流、数据流等,它们在底层字节流和字符流的基础上提供了更多...

    Data-Stream-Engine:Data Stream Engine 是为数据收集和发布而创建的。 它是为可以基于它轻松开发的 Java 开发人员设计的。 开发人员可以为他们的业务编写自己的 Input\Output\Event 实现

    许多文件都由这个输入监视(当然,我测试了 1 万个文本文件,它在我的小 PC 上每秒从一个文件中读取 40 万行,这是 NIO2 的好处)。 read while post to events 的消息进行过滤和处理; 2、Event ...

    j2se项目源码及介绍_last指令

    在Unix系统中,有一个last指令可以查看用户登录服务器的历史记录,last指令的工作原理就是读取unix下的一个系统文件,解析然后输出的效果。 在今后的电信用户数据采集系统项目中,就是通过读取该系统文件来确定用户...

    JAVA上百实例源码以及开源项目源代码

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

Global site tag (gtag.js) - Google Analytics