java多线程读取多个文件的方法
作者:戴着红领巾走世界 发布时间:2022-12-05 04:37:45
标签:java,多线程,读取文件
本文实例为大家分享了java多线程读取多个文件的具体代码,供大家参考,具体内容如下
工具类代码如下:
import java.io.*;
import java.util.List;
import java.util.concurrent.CountDownLatch;
/**
* 多线程读取多个文件
*/
public class FileThread extends Thread{
private final CountDownLatch countDownLatch = new CountDownLatch(10);
private int fileIndex;
private List<String> filelist;
private String filepath = "D:\\LocalFtpServer\\data20181229\\";
private String movepath = "D:\\LocalFtpServer\\data20181229_01\\";
public int getFileIndex() {
return fileIndex;
}
public void setFileIndex(int fileIndex) {
this.fileIndex = fileIndex;
}
public List<String> getFilelist() {
return filelist;
}
public void setFilelist(List<String> filelist) {
this.filelist = filelist;
}
@Override
public void run() {
for (int i = 0; i < filelist.size(); i++) {
if (i % 10 == fileIndex) {
//读取文件
File readfile = new File(filepath + filelist.get(i));
InputStreamReader isr = null;
try {
isr = new InputStreamReader(new FileInputStream(readfile), "UTF-8");
BufferedReader reader = new BufferedReader(isr);
String line = null;
// 一次读入一行,直到读入null为文件结束
while ((line = reader.readLine()) != null) {
System.out.println(line );
}
reader.close();
isr.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//读取完后, 移动文件位置
readfile.renameTo(new File(movepath + readfile.getName()));
}
}
countDownLatch.countDown();
}
}
调用测试:
public static void main(String[] args) throws IOException {
String filepath = "D:\\LocalFtpServer\\data20181229\\";
File file = new File(filepath);
//读取目录下所有文件
String[] filelist = file.list();
List<String> fList=new ArrayList<String>();
for (int i = 0; i < filelist.length; i++) {
if (filelist[i].startsWith("data") && filelist[i].endsWith(".txt")) {
fList.add(filelist[i]);
}
}
for(int i=0;i<30;i++){
FileThread fileThread=new FileThread();
fileThread.setFileIndex(i);
fileThread.setFilelist(fList);
fileThread.start();
}
countDownLatch.await();
}
来源:https://blog.csdn.net/HoneyYHQ9988/article/details/85601628
0
投稿
猜你喜欢
- BitArray的基础可以看菜鸟编程BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),
- 一、修改ReadOnly属性1、设置整个DataGridView只读:DataGridView.ReadOnly=true;此时用户的新增行
- 一、Collection集合Collection接口是单列集合类的父接口,这种集合可以将数据一个一个的存放到集合中。它有两个重要的子接口,分
- Java 线程池ExecutorService1.线程池1.1什么情况下使用线程池单个任务处理的时间比较短.将需处理的任务的数量大.1.2使
- Android之文件数据存储一、文件保存数据介绍Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的
- Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建
- 使用包管理器package com.liunan.myfirstapp.util;import android.content.Contex
- 今天讲解一下Fragment的控制,主要是切换View和页面替换等操作。还有就是如何获取Fragment的管理对象,以及与Activity的
- 我们通过一个完整的实例来实现课程信息管理功能的操作,包括查询、修改、删除课程信息的操作。为了简化实例,添加课程信息的操作直接在 SQL Se
- 目录结构:Data.xls数据: 后台页面:public void doGet(HttpServletRequest reques
- 前言现在有这么个需求,网上购物,需要根据不同的规则计算商品折扣,比如VIP客户增加5%的折扣,购买金额超过1000元的增加10%的折扣等,而
- 1、java代码/** 获取客户端IP */ public static final String getClientIp(Ht
- 本文实例讲述了C#生成二维码的方法。分享给大家供大家参考。具体实现方法如下:首先引用ThoughtWorks.QRCode.dll具体代码如
- 相信大家对SaaS架构都有所了解,这里也不过多介绍,让我们直奔主题。技术框架springboot版本为2.3.4.RELEASE持久层采用J
- 这是 Java 爬虫系列博文的第四篇,在上一篇Java 爬虫数据异步加载如何解决,试试这两种办法! 中,我们从内置浏览器内核和反向解析法两个
- 1. 基本概念的理解`绝对路径`:你应用上的文件或目录在硬盘上真正的路径,如:URL、物理路径例如:c:/xyz/test.txt代表了te
- 引言RecyclerView是在Android5.0版本作为support-v7的一个组件出现,高效替代了最初的ListView等列表组件。
- 这篇文章主要介绍了Java String的intern用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 前言Zuul 是Netflix 提供的一个开源组件,致力于在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。也有很多公司使用它来作为
- 一、注解是什么Java 注解用于为 Java 代码提供元数据,看完这句话也许你还是一脸懵逼,用人话说就是注解不直接影响你的代码执行,仅提供信