java多线程读取文件_JAVA多线程读写文件范例

在写之前先声明,本文是基于之前在博客园网站上检索到的一份JAVA多线程读写文件的示例,我在写自己的程序时是在那位作者写的基础上做了改良,但已不记得原文的地址。如果有知情者,烦请帖出地址,我在此文上加入引用或转载。

本程序是基于这么一种考虑,某系统后台有个将近2G大小的日志文件,你用任何编辑器去打开它,都将会很困难。针对这样的大文件解析处理,解决方案是使用多个线程,分割读取指定的大文件。获取我们所需要的信息。不多说,上代码了,有注释可以帮助理解。

Java代码  5dcc728ba911b6562957664715830fca.png

package com.thread.multipl.mysolution;

import java.io.IOException;

import java.io.RandomAccessFile;

import java.util.concurrent.CountDownLatch;

/**

* 这个线程用来读取文件,当获取到指定关键字时,在指定的对象加1

* @author 刘峰管理2

*

*/

public class ReadThread extends Thread{

//定义字节数组(取水的竹筒)的长度

private final int BUFF_LEN = 256;

//定义读取的起始点

private long start;

//定义读取的结束点

private long end;

//将读取到的字节输出到raf中  randomAccessFile可以理解为文件流,即文件中提取指定的一部分的包装对象

private RandomAccessFile raf;

//线程中需要指定的关键字

private String keywords;

//此线程读到关键字的次数

private int curCount = 0;

/**

* jdk1.5开始加入的类,是个多线程辅助类

* 用于多线程开始前统一执行操作或者多线程执行完成后调用主线程执行相应操作的类

*/

private CountDownLatch doneSignal;

public ReadThread(long start, long end, RandomAccessFile raf,String keywords,CountDownLatch doneSignal){

this.start = start;

this.end = end;

this.raf  = raf;

this.keywords = keywords;

this.doneSignal = doneSignal;

}

public void run(){

try {

raf.seek(start);

//本线程负责读取文件的大小

long contentLen = end - start;

//定义最多需要读取几次就可以完成本线程的读取

long times = co

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值