java多个文件连续读取效率如何提高? 本人有一万多个txt文件放在一个文件夹里面,平均每个文件大小为2M左右。现在写了个循环一次读取所有文件并处理,出现的现象是开始几十个甚至几百个文件读取很快,但是后面的文件平均1秒才能读一个。请问是什么问题?为什么前快后慢?是文件的索引相关问题还是读取时的缓存方面有问题?查找了一些资料,对于java缓存方面的原理还不是很理解,请大家帮忙解答一下,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 文件流有关闭吗,建议把这么多文件先合并成大文件再进行读取。如果是txt文件,可以直接用shell脚本的cat进行合并#!/bin/sh#Folder_A文件所在目录Folder_A="/home/source" target="/home/target.txt"for file_a in ${Folder_A}/*; do temp_file=`basename $file_a` echo $temp_file targetFile="$Folder_A/$temp_file" echo $targetFile cat $targetFile >> $targetdone 可以尝试使用nio包下面的类进行处理:Charset charset = Charset.forName("UTF-8"); try(DirectoryStream<Path> entries = Files.newDirectoryStream(new File("").toPath())){ for(Path entry : entries){ //Files.readAllLines(entry, charset); } }java核心技术卷二(第九版)流与文件 第一章有一段介绍:旧的File类有一个方法,可以用来获取由一个目录中的所有文件构成的数组,但是当目录中包含大量文件时,这个方法的性能会非常低。 是linux系统还是windows系统,最好你的代码也能贴一下。合并可以减少读写,但是我的需求不能合并,请问您知道后面越来越慢是什么原因么? java中 textArea这个类设计的界面不能编辑 java画图问题,大神帮帮忙。 用Javamail发送邮件时,在transport.connect时停住了,整个线程就死在这不往下执行了 初学java,想知道怎么用hasNextInt限制输入为数字 怎么理解 根据学生的成绩判断等级 关于string.split("\\D"),该怎么理解? 问一个下拉框的问题? 求救! 类名中能抛异常吗?求高手指导 房贷计算器 用Java实现检测短字符串存在于长字符串中
如果是txt文件,可以直接用shell脚本的cat进行合并#!/bin/sh
#Folder_A文件所在目录
Folder_A="/home/source"
target="/home/target.txt"
for file_a in ${Folder_A}/*; do
temp_file=`basename $file_a`
echo $temp_file
targetFile="$Folder_A/$temp_file"
echo $targetFile
cat $targetFile >> $target
done
Charset charset = Charset.forName("UTF-8");
try(DirectoryStream<Path> entries = Files.newDirectoryStream(new File("").toPath())){
for(Path entry : entries){
//Files.readAllLines(entry, charset);
}
}
java核心技术卷二(第九版)流与文件 第一章有一段介绍:旧的File类有一个方法,可以用来获取由一个目录中的所有文件构成的数组,但是当目录中包含大量文件时,这个方法的性能会非常低。