`
andyjackson
  • 浏览: 58564 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

文件io测试

    博客分类:
  • java
阅读更多
简而言之,就是利用回调模式,在线程完成了操作之后调用主线程了监听方法。废话不说,上码:
监听接口,继承该类实现回调
/**
 * @author ajwang
 * 回调接口 
 *
 */
public interface DigestListener {
	public void digestCalculated(List<String> list) throws IOException; 
}

具体的线程类,读取文件
/**
 * @author ajwang
 *
 */
public class ListCallbackDigest implements Runnable {

	private File inputFile; 
    private DigestListener digestListener;

    public ListCallbackDigest(File inputFile, DigestListener digestListener) { 
        this.inputFile = inputFile; 
        this.digestListener=digestListener;
    } 

    public void run() { 
        try { 
            BufferedReader br = new BufferedReader(new FileReader(inputFile));
            List<String> result = new ArrayList<String>();
            String temp="";
            while((temp=br.readLine() )!= null){
            	result.add(temp);
            }
            //进行回调
            digestListener.digestCalculated(result);
        } catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        } catch (IOException e) {
			e.printStackTrace();
		}
    } 

}

继承监听接口,实现线程监听回调
/**
 * @author ajwang
 * 
 */
public class ListCallbackDigestUser implements DigestListener {
	private BufferedWriter bw;
	private int counter;
	private int current=0;
	private long start;

	public ListCallbackDigestUser(String outFIlePath) throws IOException {
		this.bw = new BufferedWriter(new FileWriter(new File(outFIlePath)));
	}

	public synchronized void digestCalculated(List<String> list)
			throws IOException {
		for (String s : list) {
			//System.out.println(s);
			bw.write(s);
			bw.newLine();
		}
		this.current++;
		if(current>=counter){
			bw.flush();
			bw.close();
			long end =System.nanoTime();
			System.out.println("系统用时:"+(end-start));
		}		
	}

	public void process(String[] arr) {
		start =System.nanoTime();
		this.counter=arr.length;
		for (int i = 0; i < arr.length; i++) {
			File f = new File(arr[i]);
			new Thread(new ListCallbackDigest(f, this)).start();
		}
	}

	public static void main(String[] args) throws IOException {
		ListCallbackDigestUser me = new ListCallbackDigestUser(
				"/home/8888/Desktop/test/out.txt");
		String arr[] = { "/home/ajwang/Desktop/test/xcopy.txt",
				"/home/***8/Desktop/test/x.txt",
				"/home/***8/Desktop/test/xb.txt",
				"/home/****/Desktop/test/bf2.txt",
				"/home/****/Desktop/test/bf2.txt" };
		me.process(arr);
	}

}

测试了一下,还不错:

  • 大小: 6.7 KB
  • 大小: 28.7 KB
分享到:
评论

相关推荐

    t-io测试工具.rar

    “t-io测试工具.rar”这个压缩包文件,便是为这些目的而设计的。它包含了用于生成测试数据的工具,以及进行各种测试操作的实用程序。在使用之前,我们需要先解压文件,然后根据提供的说明文档或代码示例,了解各个...

    io测试软件

    "TestIO"这个文件可能是该io测试软件的执行程序或者配置文件。在实际操作中,用户需要运行此文件来启动测试流程。根据具体情况,它可能包含设置参数、保存测试结果、生成测试报告等功能。 总的来说,"io测试软件"是...

    Linux 文件IO编程-模拟登陆系统

    本项目"Linux 文件IO编程-模拟登陆系统"旨在通过实践,让开发者深入理解如何利用C语言进行文件操作,并结合Linux图形库curses实现一个简单的用户交互界面。下面将详细介绍这个项目涉及的关键知识点。 1. 文件IO编程...

    stm32io测试程序

    标题中的“stm32io测试程序”意味着这是一个专门用于测试STM32微控制器I/O口功能的代码项目。通常,这样的程序会涉及到GPIO(General Purpose Input/Output)寄存器的配置,包括设置I/O端口的方向(输入或输出)、...

    KUKA机器人输入输出IO信号测试1.2.pdf,这是一份不错的文件

    KUKA机器人输入输出IO信号测试 KUKA机器人IO信号测试是非常重要的一项功能,在机器人进行I/O通讯时,需要监控I/O信号的状态,或者与外部进行输入、输出信号交互。下面是KUKA机器人IO信号测试的详细知识点: 一、在...

    /dev/null和/dev/zero文件使用详解和误删修复方法以及服务器磁盘IO测试详解

    关于linux系统文件/dev/null和/dev/zero文件的详解和/dev/null、/dev/zero文件误删后的修复方法以及服务器磁盘IO测速详解,和一些常见/dev/null /dev/zero文件的用途用法示例说明

    Antutu Storage IO测试流程详解

    其中,Storage IO测试是Antutu的一个重要组成部分,主要用来衡量设备内部存储器的读写速度。这不仅能够帮助用户了解设备的存储性能,也为开发者提供了优化存储系统的依据。 #### 二、测试流程概览 Storage IO测试...

    java nio与io性能测试

    `io与nio性能测试.txt`文件可能包含了实际运行的性能测试结果,包括平均时间、吞吐量等指标。这种测试可能涉及多次运行,以减少偶然因素的影响。通常,NIO在处理大量数据或并发I/O操作时表现更好,因为它允许程序在...

    Labview 文件IO VI

    本文将详细探讨LabVIEW文件I/O VI的开发和使用,以及如何通过提供的“第9章 文件IO”中的例程来学习和应用这些知识。 文件I/O在LabVIEW中通常涉及以下几类操作: 1. **文件打开(Open File)**:使用“打开文件”...

    磁盘IO测试工具

    在这个配置中,`filename`指定了测试文件的位置,`iodepth`设置了队列深度,`rw`定义了I/O类型,`blocksize`是每个I/O操作的数据块大小,`size`是总的测试数据量。`job1`和`job2`定义了两个并行运行的任务,每个任务...

    威强电工业电脑IO测试程序C#版本

    《威强电工业电脑IO测试程序C#版本详解》 在工业自动化领域,对设备的输入/输出(IO)功能进行测试是确保系统稳定运行的关键环节。本文将深入探讨威强电工业电脑的C#版IO测试程序,该程序基于底层DLL编写,旨在提供...

    IO卡测试工具,测试IO卡通讯

    IOTest(1).exe很可能是这个IO卡测试工具的可执行文件,用户可以直接运行它来启动测试。在使用此工具时,首先要确保电脑与IO卡连接正确,然后通过软件配置IO点的地址和通讯协议。在测试过程中,可以实时查看IO信号的...

    文件IO_day1.pdf

    文件IO_day1.pdf 本资源摘要信息涵盖了文件IO的基本概念、Linux文件IO、赫夫曼树赫夫曼编码、静态库和动态库、文件I/O分类、Linux输出机制、文件操作函数等知识点。 1.赫夫曼树赫夫曼编码 赫夫曼树赫夫曼编码是一...

    IO性能测试软件合集32位和64位

    在CrystalDiskMark界面可以选择测试次数,测试文件大小和测试对象,点击下面一排按钮就可以进行单个文件读写或者512kb、4kb的多个小文件读写测试。其实这类软件对硬盘没什么意思,我留在电脑里面是测试优盘的速度用...

    Labview 文件IO之文本文件写入实验测试

    实验测试和详细教程。

    倍福CX20X0带500个IO测试.zip

    标题中的“倍福CX20X0带500个IO测试”指的是使用倍福(Beckhoff)CX20X0系列控制器进行的一项测试,该控制器具备500个输入/输出(I/O)点。在工业自动化领域,I/O点是用于连接设备和系统以实现数据交换的关键部分。...

    基于重叠IO机制的网络通讯类CNet,附文件传输测试工程

    本文将深入探讨“基于重叠IO机制的网络通讯类CNet”,并结合提供的文件“TestNetComm”来解析这一技术。 首先,我们要理解什么是重叠IO(Overlapped I/O)。在Windows系统中,重叠IO是一种异步I/O模型,它允许数据...

    文件IO操作开发笔记(一):使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具

    《文件IO操作开发笔记(一):使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具》 https://hpzwl.blog.csdn.net/article/details/128438303 在做到个别项目对日志要求较高,要求并行写入的数据较多,尽管写入...

Global site tag (gtag.js) - Google Analytics