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 ...
随机推荐
- python接入微博第三方API之2接入用户登录和微博发布
python接入微博第三方API之2接入用户登录和微博发布 # coding=utf-8 import requests import json import MySQLdb from datetim ...
- shell编程系列8--文本处理三剑客之grep和egrep
grep和egrep 第一种形式:grep [option] [pattern] [file1,file2...] 第二种形式:command | grep [option] [pattern] gr ...
- Flutter修改应用图标及图标
应用名称是需要在 Android 和 iOS 中分别调整的:Android 是在 AndroidManifest.xml 中修改:iOS 则是在 Info.plist 中修改的: 如果需要更改应用的 ...
- Python - Django - 模板语言之自定义过滤器
自定义过滤器的文件: 在 app01 下新建一个 templatetags 的文件夹,然后创建 myfilter.py 文件 这个 templatetags 名字是固定的,myfilter 是自己起的 ...
- 如何取到el-select中的label
在el-select中我们一般都是取到value的值,但是有时候我们需要value和label都需要.那怎么方便的取到呢 在网上经常有ref="cascader"这个方法,但是经过 ...
- 常见的序列化框架及Protobuf序列化原理
原文链接:https://www.jianshu.com/p/657fbf347934 https://www.cnblogs.com/javazhiyin/p/11375553.html https ...
- oauth2 + jwt 实现用户中心
由于公司项目比较杂,以前都是各产品线自行完成注册和登入.随着产品迭代,需要一个用户中心统一用户的管理,写个博客做个记录. 用oauth2实现,jwt作为token生成. oauth2流程图: user ...
- poj 3061 题解(尺取法|二分
题意 $ T $ 组数据,每组数据给一个长度 $ N $ 的序列,要求一段连续的子序列的和大于 $ S $,问子序列最小长度为多少. 输入样例 2 10 15 5 1 3 5 10 7 4 9 2 8 ...
- Mysql 定时备份(mysqldump)
#!/bin/bash today=`date +%Y-%m-%d` deleday=`date -d '7 day ago' +%Y-%m-%d` path=/home/data/mysqlback ...
- Python for循环生成列表
一般Python for语句前不加语句,但我在机器学习实战中看到了这两条语句: featList = [example[i] for example in dataSet] classList = [ ...