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 ...
随机推荐
- Spark获取DataFrame中列的几种姿势--col,$,column,apply
1.doc上的解释(https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/sql/Column.html) df("c ...
- Qt Http get
1.直接建立连接,向网站发送http请求 QNetworkAccessManager *accessManager = new QNetworkAccessManager(this); connect ...
- Linux记录-mysql服务管理shell实现
#!/bin/bash menu() { echo "---欢迎使用mysql管理服务程序---" echo "# 1.启动服务" echo "# 2 ...
- 【翻译】Flink Table Api & SQL ——Streaming 概念
本文翻译自官网:Streaming 概念 https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/streamin ...
- 《MySQL必知必会》学习笔记——第30章 改善性能
本章将付息与MySQL性能有关的某些要点. 30.1 改善性能 数据库管理员把他们生命中的相当一部分时间花在了调整.试验以改善DBMS性能之上.在诊断英勇的滞缓现象和性能问题时,性能不良的数据库(以及 ...
- 【JS新手教程】JS中的split()方法,拆分字符串
该方法具体如代码和图中的注释,直接在语句后面加注释了.格式:要拆分的字符串.split(拆分依据的字符)例如该文中的例子,拆分人名,电话,地址.该文中用了个文本框,文本框中需要输入的格式是:人名,电话 ...
- div定位relative和absolute和float测试3
position等于absolute的时候,不一定是相对于浏览器定位,当div存在包含关系时,父div设置成relative,其中包含的div设置成absolute就是相对于该父div的了.该文测试了 ...
- Tomcat教程(转)
转载链接: https://www.cnblogs.com/jingmoxukong/p/8258837.html?utm_source=gold_browser_extension 简介 Tomca ...
- Center Message
企鹅号 头条号 大鱼号 百家号 趣头条
- ubuntu18.04下安装gitlab
1.安装并配置必要的依赖关系 sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates 接下来,安 ...