- 浏览: 109720 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (79)
- java (8)
- java虚拟机 (3)
- 学习类 (4)
- Java SE (26)
- java引用 (1)
- 工作总结。 (2)
- JSF (1)
- 软件架构 (1)
- Javascript (10)
- struts2 (1)
- eclipse (1)
- mysql (1)
- ArcGis (4)
- dojo (1)
- Extjs (1)
- jquery (4)
- 软件包 (1)
- 控件 (1)
- tuijian (0)
- 命令 (1)
- JAVAEE (1)
- goagent教程详细版猫理会 (0)
- python (0)
- tomcat (1)
- eclipse 出 can not create virtual machine (1)
- spring (3)
- 设计模式 (3)
- hibernate (1)
- dd (0)
- 样式 (0)
- http://blog.csdn.net/wisgood/article/details/11762427 (0)
最新评论
-
bz5011:
node.eachChild() 要延迟,等node.expa ...
EXTJS学习笔记----EXTJs中带复选框的tree,选中父节点时所有子节点也被选中 -
hvang1988:
[img][/img][url][/url][flash= ...
jquey 取值 -
xiaguangme:
写的很不错
java需要关注的知识点---HashMap -
perfect613:
sinly 写道perfect613 写道你好,有个问题请教一 ...
JS动态创建表格,动态设置属性,动态添加事件 . -
aiyingpower:
把哥的代码拿过来也不注明一下?
arcgis地图————————基础操作
在读取大文件的时候,采用管道方式进行分流,使用byteBuffer把文件分成一段段的进行读写。
生成大文件 :
读文件:
采用NI0可以加快文件的读取速度!
生成大文件 :
public class ProductionFile { private static void productFile() throws FileNotFoundException { File file = new File("D://larger.txt"); PrintWriter pw = new PrintWriter(file); try{ for (int i = 0;i<1024;i++) { for (int j = 0;j <1024;j++){ for(int k = 0;k<1024;i++){ pw.write(i+":" +j); } pw.flush(); } pw.flush(); } }finally{ pw.close(); } } public static void main(String[] args) { try { productFile(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
读文件:
public class LargeMappedFiles { static int length = 0x300000; /** * @param args * @throws IOException * @throws FileNotFoundException */ public static void main(String[] args) throws FileNotFoundException, IOException { File file = new File("D://larger.txt"); FileChannel fileChannel = new RandomAccessFile(file, "rw") .getChannel(); /** * map(FileChannel.MapMode mode,long position, long size) mode - * 根据是按只读、读取/写入或专用(写入时拷贝)来映射文件,分别为 FileChannel.MapMode 类中所定义的 * READ_ONLY、READ_WRITE 或 PRIVATE 之一 position - 文件中的位置,映射区域从此位置开始;必须为非负数 * size - 要映射的区域大小;必须为非负数且不大于 Integer.MAX_VALUE * 所以若想读取文件后半部分内容,如例子所写;若想读取文本后1 * /8内容,需要这样写map(FileChannel.MapMode.READ_ONLY, * f.length()*7/8,f.length()/8) * 想读取文件所有内容,需要这样写map(FileChannel.MapMode.READ_ONLY, 0,f.length()) */ MappedByteBuffer inputBuffer = fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, file.length()/40); long start = System.currentTimeMillis(); byte[] dst = new byte[length]; System.out.println("File size:" + inputBuffer.capacity()); for( int offSet = 0; offSet<inputBuffer.capacity(); offSet += length) { if(inputBuffer.capacity() - offSet > length) { for (int i = 0 ; i < length ; i++) { dst[i] = inputBuffer.get(offSet + i ); if (i == 10) System.out.println("i:" + i+ " Value-->"+new String(dst,0, 40)+ " " ); } }else { for (int i = 0 ; i< inputBuffer.capacity() - offSet; i++) { byte b = inputBuffer.get(offSet + i ); } } } long end = System.currentTimeMillis(); System.out.println("Value-->"+new String(dst, 9990, 10000)+ " " ); System.out.println(end -start ); // System.out.println(bb.get(count-10)); } }
采用NI0可以加快文件的读取速度!
public class MappedIO { private static int numOfInts = 4000000; private static int numberOfUbuffInts = 200000; private abstract static class Tester{ private String name; public Tester(String name) { this.name = name; } public void runTest() { System.out.print(name + ":"); try{ long start = System.nanoTime(); test(); double duration = System.nanoTime() - start; System.out.format("%.2f\n",duration/1.0e9); }catch(IOException e){ throw new RuntimeException(e); } } public abstract void test() throws IOException; } private static Tester[] tests = { new Tester("Stream Write") { public void test() throws IOException { DataOutputStream dos = new DataOutputStream( new BufferedOutputStream(new FileOutputStream(new File( "temp.temp")))); for(int i = 0 ;i<numOfInts ;i++){ dos.writeInt(i); } dos.close(); } }, new Tester("Mapped Write") { public void test() throws IOException { FileChannel fc = new RandomAccessFile("temp.temp", "rw").getChannel(); IntBuffer ib = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size()).asIntBuffer(); for(int i = 0; i<numOfInts; i++) ib.put(i); fc.close(); } }, new Tester("Stream Reader") { public void test() throws IOException { DataInputStream dis = new DataInputStream(new BufferedInputStream( new FileInputStream(new File("temp.temp")))); for (int i = 0; i<numOfInts; i++) { dis.readInt(); } dis.close(); } } , new Tester("Mapped Reader") { public void test() throws IOException { FileChannel fc = new RandomAccessFile("temp.temp","rw").getChannel(); IntBuffer ib = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size()).asIntBuffer(); while(ib.hasRemaining()) { ib.get(); } fc.close(); } }, new Tester("Stream Writer Reader") { public void test() throws IOException { RandomAccessFile raf = new RandomAccessFile(new File("temp.temp"),"rw"); raf.writeInt(1); for(int i = 0; i<numberOfUbuffInts; i++){ raf.seek(raf.length()-4); raf.writeInt(raf.readInt()); } raf.close(); } }, new Tester("Mapped Writer/Reader") { public void test() throws IOException { FileChannel fc = new RandomAccessFile(new File("temp.temp"), "rw").getChannel(); IntBuffer ib = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size()).asIntBuffer(); ib.put(0); for(int i=1;i<numberOfUbuffInts;i++) { ib.put(ib.get(i-1)); } fc.close(); } } }; public static void main(String args[]) throws IOException { for (Tester test:tests) { test.runTest(); } } }
发表评论
-
日志记录工具类
2012-11-09 15:51 1987import org.apache.log4j.Log ... -
重入锁
2012-02-08 14:18 1155重入锁(ReentrantLock)是一种递归无阻塞的同步机制 ... -
java需要关注的知识点---并发之加入一个新线程
2012-01-03 11:29 877package com.thread; public ... -
java需要关注的知识点---并发之后台线程
2011-12-30 16:07 905所谓的后台线程,是指在程序运行的时候在后台提供一种通用服务的线 ... -
java需要关注的知识点---并发之从任务中产生返回值
2011-12-29 16:04 707class TaskWithResult implemen ... -
java需要关注的知识点---并发之使用Executor
2011-12-29 16:00 949public class CachedthreadPool ... -
java需要关注的知识点---并发之定义任务
2011-12-29 12:53 7801:定义任务: public class LiftOff ... -
java需要关注的知识点---I0之XML的生成
2011-12-27 17:47 918package com.io; import java. ... -
java需要关注的知识点---I0之对象序列化
2011-12-27 10:59 9531。对象序列化: 序列化是什么: 序列化就是将一个对象的状 ... -
java需要关注的知识点---I0之压缩
2011-12-26 15:38 8971.GZIP压缩: public class GZIPPc ... -
java需要关注的知识点---Charset
2011-12-21 10:25 8481.Charset 名称必须以字母或数字开头。空字符串不是合法 ... -
java需要关注的知识点---I0之获取特殊属性
2011-12-20 17:51 7261.获取文本的编码方式: String encoding ... -
java需要关注的知识点---I0之新IO(NI0)
2011-12-20 15:40 1180缓冲器操纵数据: ByteBuffer是数据移进移出通道的唯一 ... -
java需要关注的知识点---标准I0流
2011-12-20 11:16 679System.in public class System ... -
java需要关注的知识点---IO流
2011-12-16 17:06 8781.无论何时使用readLine(). ... -
TreeeMap的底层实现
2011-11-28 17:46 1099treeMap插入元素的图解法: 插入前: 插入过程: ... -
java需要关注的知识点---HashSet
2011-11-28 15:20 10051.构造方法: public HashSet() { ... -
java需要关注的知识点---Vector
2011-11-24 17:53 10021.默认初始大小 10. 2.Vector是一个object数 ... -
java需要关注的知识点---LinkedList
2011-11-24 10:19 3218LinkedList是采用双向链表来存储数据: Linked ... -
volatile 修饰符
2011-11-23 16:39 991volatile修饰符告诉编译程序不要对该变量所参与的操作进行 ...
相关推荐
接下来介绍一下实现思路以及相关的知识点。 内容 一、对文件分区 为了充分利用多线程读取,需要把文件划分成多个区域,供每个线程读取。那么需要有一个算法来计算出每个线程读取的开始位置和结束位置。...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
安卓java读取网页源码 :fuel_pump:说明 好记性不如烂笔头,变秃才能变强。 该仓库作为我的收集导航页面,文章来源于自己博客或者互联网,记录了我在开发过程的点滴,希望这些内容可以指导我司其他人的后续开发,少走...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。传统 IO 基于字节流和字符流进行操作,而 NIO 基于 Channel 和 Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道...