java的文件操作处理时间数据

原创 2016年06月01日 15:46:27
速度从最快到最慢的排序是:
1,内存映射文件
2,带缓冲的输入流
3,普通输入流
4,随机访问文件    

例子:
package javaPratice;


import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.*;
import java.util.zip.CRC32;
import  java.io.BufferedInputStream;
import java.io.FileNotFoundException;
public class MemoryMapUtil {
/**
* @category 普通输入流的执行
* @param fileName
* @return
* @throws IOException
*/
public static long totalInputStream(Path fileName) throws IOException{
try(InputStream in =Files.newInputStream(fileName)){
CRC32 crc=new CRC32();
int c;
while((c=in.read())!=-1){
crc.update(c);
}
return crc.getValue();

}
}
/**
* @category 带有缓冲的输入流的执行
* @param filename
* @return
* @throws IOException
*/
public static long totalBufferedInputStream(Path filename) throws IOException{
try(InputStream in =new BufferedInputStream(Files.newInputStream(filename))){
CRC32 crc=new CRC32();
int c;
while((c=in.read())!=-1){
crc.update(c);
}
return crc.getValue();
}
}
/**
* @category 随机访问文件执行
* @param filename
* @return
* @throws IOException
*/
public static long totalRandomAccessFile(Path filename) throws IOException{
try(RandomAccessFile file =new RandomAccessFile(filename.toFile(),"r")){
long length = file.length();
CRC32 crc=new CRC32();
for(long p=0;p<length;p++){
file.seek(p);
int c=file.readByte();
crc.update(c);
}
return crc.getValue();
}

/**
* @category 内存映射文件访问执行
* @param filename
* @return
* @throws IOException
*/
public static long totalMappedFIle(Path filename) throws IOException{
try(FileChannel channel = FileChannel.open(filename)){
CRC32 crc=new CRC32();
int length=(int)channel.size();
MappedByteBuffer buffer=channel.map(FileChannel.MapMode.READ_ONLY, 0, length);
for(int p=0;p<length;p++){
int c=buffer.get(p);
crc.update(c);
}
return crc.getValue();
}
}
public static void main(String args[]) throws IOException{
Path filename=Paths.get("C:/Users/Administrator.FZQ3RSFK73H2UEE/Desktop/xqb.txt");
long start =System.currentTimeMillis();
long crcValue=totalInputStream(filename);
long end =System.currentTimeMillis();
System.out.println("Input Stream");
System.out.println(Long.toHexString(crcValue));
System.out.println((end - start));

start =System.currentTimeMillis();
crcValue=totalBufferedInputStream(filename);
end =System.currentTimeMillis();
System.out.println("buffered Input Stream");
System.out.println(Long.toHexString(crcValue));
System.out.println((end - start));
 
start =System.currentTimeMillis();
crcValue=totalRandomAccessFile(filename);
end =System.currentTimeMillis();
System.out.println("total Random AccessFile");
System.out.println(Long.toHexString(crcValue));
System.out.println((end - start));

start =System.currentTimeMillis();
crcValue=totalMappedFIle(filename);
end =System.currentTimeMillis();
System.out.println("total MappedFile");
System.out.println(Long.toHexString(crcValue));
System.out.println((end - start));
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

C/C++文件操作,数据处理

这几天工作的过程中,常常要对TXT中的数据进行处理、分析。以前在学校时,对文件操作、文件内容处理的这部分知识用的不是很多,这几天用这些知识的时候,总是不太熟悉,要不停查阅资料。因此,这里总结一下,方便...

java与python在处理大文件操作上的对比

1、问题描述       现在对一个2g的大文件,抽取第二列含有特点16个串的信息,并将这些含有特串的信息,写回到两个文件中 2、具体实现       (1)java代码           ...

ANSI库续(时间函数)与文件操作初识

C/C++学习笔记之十一         上一节我们讲到了头文件stdlib.h与头文件stdio.h中的sscanf、sprintf、rand、srand函数,这一节将继续讨论时间相关函数和文件操...

php 常用函数总结(数组,字符串,时间,文件操作)

数组:【重点1】 implode(分隔,arr) 把数组值数据按指定字符连接起来 例如: $arr=array('1','2','3','4'); $str=implode('-',$ar...

C++Builder函数集(文件操作、获取时间、类型转换等)

BCB函数集 1。内存分配 函数名称 AllocMem 函数说明 在队中分配指定字节的内存块,并将分配的每一个字节初始化为 0.函数原型如下: vo...

C++标准库获取时间、简单的文件操作

参考文章: http://blog.csdn.net/luotuo44/article/details/46854229 http://www.2cto.com/kf/201404/290706.h...

pandas数据处理常用函数demo之创建/行列操作/查看/文件操作

pandas是Python下强大的数据分析工具,这篇文章代码主要来自于 10 Minutes to pandas,我将示例代码进行了重跑和修改,基本可以满足所有操作...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java的文件操作处理时间数据
举报原因:
原因补充:

(最多只允许输入30个字)