java多线程读取多个文件的方法

 更新时间:2019年08月30日 08:36:35   作者:戴着红领巾走世界  
这篇文章主要为大家详细介绍了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();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 关于Java集合框架Collection接口详解

    关于Java集合框架Collection接口详解

    这篇文章主要介绍了关于Java集合框架Collection接口详解,Collection接口是Java集合框架中的基础接口,定义了一些基本的集合操作,包括添加元素、删除元素、遍历集合等,需要的朋友可以参考下
    2023-05-05
  • java验证用户是否已经登录 java实现自动登录

    java验证用户是否已经登录 java实现自动登录

    这篇文章主要介绍了java验证用户是否已经登录,java实现自动登录,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Java值传递之swap()方法不能交换的解决

    Java值传递之swap()方法不能交换的解决

    这篇文章主要介绍了Java值传递之swap()方法不能交换的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringBoot详细讲解静态资源导入的实现

    SpringBoot详细讲解静态资源导入的实现

    在Web开发过程中,我们需要接触许多静态资源,如CSS、JS、图片等;在之前的开发中,这些资源都放在Web目录下,用到的时候按照对应路径访问即可。不过在SpringBoot项目中,没有了Web目录,那这些静态资源该放到哪里去,又要如何访问呢?这就是我们要讲的静态资源导入
    2022-05-05
  • Java使用正则表达式实现找出数字功能示例

    Java使用正则表达式实现找出数字功能示例

    这篇文章主要介绍了Java使用正则表达式实现找出数字功能,结合实例形式分析了Java针对数字的匹配查找及非数字替换操作相关实现技巧,需要的朋友可以参考下
    2017-03-03
  • java 中二分法查找的应用实例

    java 中二分法查找的应用实例

    这篇文章主要介绍了java 中二分法查找的应用实例的相关资料,希望通过本文大家能掌握二分法的使用方法,需要的朋友可以参考下
    2017-09-09
  • Java Socket编程实例(五)- NIO UDP实践

    Java Socket编程实例(五)- NIO UDP实践

    这篇文章主要讲解Java Socket编程中NIO UDP的实例,希望能给大家做一个参考。
    2016-06-06
  • Java异常 Exception类及其子类(实例讲解)

    Java异常 Exception类及其子类(实例讲解)

    下面小编就为大家带来一篇Java异常 Exception类及其子类(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Java如何获取@TableField,@TableName注解的值

    Java如何获取@TableField,@TableName注解的值

    这篇文章主要介绍了Java如何获取@TableField,@TableName注解的值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Struts2 使用OGNL遍历map方法详解

    Struts2 使用OGNL遍历map方法详解

    这篇文章主要介绍了Struts2 使用OGNL遍历map方法详解,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09

最新评论