java读取文件的几种方式性能比较
//普通输入流读取文件内容
public static long checksumInputStream(Path filename)
{
try(InputStream in= Files.newInputStream(filename))
{
CRC32 crc=new CRC32();
int c;
while ((c=in.read())!=-)
{
crc.update(c);
}
return crc.getValue();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ;
}
} //带有缓冲读取文件
public static long checkSumBufferedInputStream(Path filename)
{
try(InputStream in=new BufferedInputStream(Files.newInputStream(filename)))
{
CRC32 crc=new CRC32();
int c;
while ((c=in.read())!=-)
{
crc.update(c);
}
return crc.getValue();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ;
} //随机读取文件
public static long checksumRandomAccessFile(Path filename)
{
try(RandomAccessFile file=new RandomAccessFile(filename.toFile(), "r"))
{
long length=file.length();
CRC32 crc=new CRC32();
for (int i = ; i < length; i++) {
file.seek(i);
int c=file.readByte();
crc.update(c);
}
return crc.getValue();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ;
} //通过磁盘映射读取文件
public static long checksumMappedFile(Path filename)
{
try(FileChannel channel=FileChannel.open(filename))
{
CRC32 crc=new CRC32();
int length=(int)channel.size();
MappedByteBuffer buffer= channel.map(FileChannel.MapMode.READ_ONLY, , length);
for (int i = ; i <length; i++)
{
int c=buffer.get(i);
crc.update(c);
}
return crc.getValue(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ;
}
普通输入流:68513ms
带缓冲的方式:116ms
随机访问读取:81203ms
磁盘映射读取方式:102ms
java读取文件的几种方式性能比较的更多相关文章
- Java读取文件的几种方式
package com.mesopotamia.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; im ...
- 【文件下载】Java下载文件的几种方式
[文件下载]Java下载文件的几种方式 摘自:https://www.cnblogs.com/sunny3096/p/8204291.html 1.以流的方式下载. public HttpServl ...
- 精通awk系列(3):铺垫知识:读取文件的几种方式
回到: Linux系列文章 Shell系列文章 Awk系列文章 读取文件的几种方式 读取文件有如下几种常见的方式: 下面使用Shell的read命令来演示前4种读取文件的方式(第五种按字节数读取的方式 ...
- java复制文件的4种方式
尽管Java提供了一个可以处理文件的IO操作类.但是没有一个复制文件的方法.复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候.然而有几种方法可以进行Java文件复制操作,下面列举出4中最 ...
- Java读写文件的几种方式
自工作以后好久没有整理Java的基础知识了.趁有时间,整理一下Java文件操作的几种方式.无论哪种编程语言,文件读写操作时避免不了的一件事情,Java也不例外.Java读写文件一般是通过字节.字符和行 ...
- [JAVA]java复制文件的4种方式
尽管Java提供了一个可以处理文件的IO操作类. 但是没有一个复制文件的方法. 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候. 然而有几种方法可以进行Java文件复制操作,下面列举出 ...
- java 下载文件的两种方式和java文件的上传
一:以网络的方式下载文件 try { // path是指欲下载的文件的路径. File file = new File(path); // 以流的形式下载文件. InputStream fis = n ...
- java 读取文件内容 三种形式及效率对比
IOUtils.getStringFromReader() 读取方式为最快的 InputStream in = null; String line = ""; long start ...
- java追加文件的几种方式
import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.FileWriter; import ja ...
随机推荐
- v关于使用Glide加载图片失败时显示自己特定的图片
Glide是Android加载图片的一个框架. 常用加载图片到imageView:Glide.with(this).load(url).into(ImageView imageview). 当加载失败 ...
- 【427】Graph 实现 以及 DFS & BFS
目录: Graph 实现 二维数组实现 Linked List 实现 DFS:深度优先搜索 stack 实现 recursion 实现 BFS:广度优先搜索(queue) 其他应用 非连通图遍历 - ...
- 【426】C 传递数组给函数
参考:C 传递数组给函数 参考:C语言二维数组作为函数参数传递 参考:二维数组作为函数参数传递剖析(C语言)(6.19更新第5种) 总结: 一维数组参数,可以是地址.arr[].arr[n] 二维数组 ...
- 123457123456#0#----com.DoraGame.AiMiYu20--前拼后广--caimi-doraX
com.DoraGame.AiMiYu20--前拼后广--caimi-doraX
- 增强篇4 CO01生产订单屏幕增强
Step1. 结构 CO_AUFK 里增加自定义字段:ZZZ_TRIAL 然后激活结构 查看AUFK是激活状态, 字段增强完成: Step2. CMOD 使用客户增强:PPCO0012 生产订 ...
- LODOP粒度TableRowThickNess合并行测试
之前的博文:LODOP打印table不切行TableRowThickNess. ,中是没有合并行等的表格,通过设置增大分页粒度,会找附近的表格线,然后根据表格线分页,避免了切行.如果有比较复杂的表格, ...
- os删除文件或者文件夹
最近在使用os.remove删除目录时报错了,这里记录下os操作文件或者目录的常用方法 递归删除文件或文件夹 import shutil shutil.rmtree() 文件的重命名 os.renam ...
- PHP-FPM配置与调优
PHP-FPM是啥? PHP-FPM是一个PHP FastCGI的管理器,它实际上就是PHP源代码的补丁,旨在将FastCGI进程管理引进到PHP软件包中. CGI是啥? CGI全称"公共网 ...
- 异常查错java.net.SocketException: Connection reset
用httpclient访问后台接口报错java.net.SocketException: Software caused connection abort: recv failed,百度了一圈都说是由 ...
- Echarts dataZoom 区域缩放
dataZoom=[ //区域缩放 { id: 'dataZoomX', show:true, //是否显示 组件.如果设置为 false,不会显示,但是数据过滤的功能还存在. backgroundC ...