注:bufferedRead读写的速度最快
package com.test;
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class Test {
private static int numOfInts = 4000000;
private static int numOfUbuffInts = 200000;
private abstract static class Tester {
private String name;
public Tester(String name) {
this.name = name;
}
public long runTest() {
System.out.print(name + ": ");
try {
long startTime = System.currentTimeMillis();
test();
long endTime = System.currentTimeMillis();
return (endTime - startTime);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public abstract void test() throws IOException;
}
private static Tester[] tests = { new Tester("Stream Write") {
public void test() throws IOException {
DataOutputStream dos = new DataOutputStream(
new BufferedOutputStream(new FileOutputStream(new File(
"temp.tmp"))));
for (int i = 0; i < numOfInts; i++)
dos.writeInt(i);
dos.close();
}
}, new Tester("Mapped Write") {
public void test() throws IOException {
FileChannel fc = new RandomAccessFile("temp.tmp", "rw")
.getChannel();
IntBuffer ib = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size())
.asIntBuffer();
for (int i = 0; i < numOfInts; i++)
ib.put(i);
fc.close();
}
}, new Tester("Stream Read") {
public void test() throws IOException {
DataInputStream dis = new DataInputStream(new BufferedInputStream(
new FileInputStream("temp.tmp")));
for (int i = 0; i < numOfInts; i++)
dis.readInt();
dis.close();
}
}, new Tester("Mapped Read") {
public void test() throws IOException {
FileChannel fc = new FileInputStream(new File("temp.tmp"))
.getChannel();
IntBuffer ib = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size())
.asIntBuffer();
while (ib.hasRemaining())
ib.get();
fc.close();
}
}, new Tester("BufferReader Read") {
public void test() throws IOException {
File file = new File("temp.tmp");
InputStreamReader read = new InputStreamReader(
new FileInputStream(file), "UTF-8");
BufferedReader reader = new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null){
}
read.close();
}
}, new Tester("Stream Read/Write") {
public void test() throws IOException {
RandomAccessFile raf = new RandomAccessFile(new File("temp.tmp"),
"rw");
raf.writeInt(1);
for (int i = 0; i < numOfUbuffInts; i++) {
raf.seek(raf.length() - 4);
raf.writeInt(raf.readInt());
}
raf.close();
}
}, new Tester("Mapped Read/Write") {
public void test() throws IOException {
FileChannel fc = new RandomAccessFile(new File("temp.tmp"), "rw")
.getChannel();
IntBuffer ib = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size())
.asIntBuffer();
ib.put(0);
for (int i = 1; i < numOfUbuffInts; i++)
ib.put(ib.get(i - 1));
fc.close();
}
} };
public static void main(String[] args) {
for (int i = 0; i < tests.length; i++)
System.out.println(tests[i].runTest());
}
分享到:
相关推荐
本主题将深入探讨六种不同的文件读写方法,适用于处理文本文件(如.txt格式)。以下是对每种方法的详细说明: 1. **标准库函数**: 使用C++的标准库函数`fstream`进行文件读写是最常见的方式。`ifstream`用于读取...
在Android平台上,对文件进行读写操作是应用程序中常见的需求,比如存储用户数据、缓存信息或者媒体资源。本文将详细讲解如何在Android系统中进行SD卡和内部存储的读写,以及如何获取文件目录。 ### 1. Android权限...
文件读写监控工具是计算机系统管理和维护中不可或缺的软件,它们可以帮助用户跟踪、记录和分析系统中的文件操作,包括打开、创建、修改、删除等动作。这类工具在故障排查、性能优化、安全审计等方面有着广泛的应用。...
随着Java的发展,不同版本提供了多种方式来处理文件读写,这使得开发者可以根据实际需求选择最合适的方法。本文将重点探讨Java在不同版本中所提供的文件读写方式,并对其进行对比分析。 #### 一、JDK 1.0 中的文件...
通过使用`asyncio.Future`对象来封装文件的异步读写,我们能够有效地提高文件处理的性能,尤其是在处理大量文件或需要并发执行多个文件读写操作的情况下。这种方式不仅能够提升程序的整体响应速度,还能充分利用硬件...
本文将探讨名为“异步读写文件测试”的程序,它是一个为初学者和开发者量身打造的学习资源,旨在通过测试异步读写速度来探究其优势。 异步读写的核心优势在于其非阻塞的特性。当程序执行读写操作时,通常需要等待...
这可能涉及到对文件内容的搜索、比较和过滤。实现时,模块可能会使用二分查找、索引或者其他高效的搜索算法来提高查询速度。 在“易语言大文件读写模块源码”这个压缩包中,包含了这个模块的源代码。源码是理解模块...
同时,对于大文件或复杂数据结构,可能需要分块读写,避免一次性加载整个文件到内存,以优化性能。 总之,MFC的CFile和CArchive类为C++程序员提供了强大而灵活的文件操作工具,无论是简单的文本写入还是复杂的对象...
这种方式减少了I/O操作,提高了文件处理的性能,并降低了CPU的负担。 首先,我们来理解内存映射的基本原理。在操作系统层面,内存映射是通过创建一个映射文件的内存区域来实现的。这个区域可以是连续的,也可以是...
特别是在处理大量数据时,如读写文件,多线程可以同时执行不同的任务,从而显著提高整体性能。本项目着重探讨如何在多线程环境中实现安全有效的文件读写操作。 首先,我们需要理解多线程的基本概念。在单核处理器...
文件同步与异步读写是计算机编程中两个关键的概念,主要涉及到I/O操作,尤其是在处理大量数据时。本文将深入探讨这两个概念,并结合提供的VC6.0和VS2005下的实例进行分析。 首先,让我们理解同步和异步读写的基本...
总的来说,无论是Linux还是Windows,C++都可以通过不同的方法处理ini文件。选择哪种方法取决于项目需求,如跨平台性、性能、易用性和内存消耗等因素。在实际开发中,推荐使用已有的成熟库,以减少错误和提高代码质量...
我们将基于提供的"DBF读写文件 C++ 查找"这一主题,通过分析描述中的"一次查找一个"和"一次查找多个"功能,来讲解相关技术细节。 首先,理解DBF文件结构是实现读写操作的基础。DBF文件由头部信息、字段定义和记录...
同时,确保文件操作的安全性,例如在读写文件前检查权限,防止数据丢失或损坏。 通过以上内容,你应该对Delphi中的文本文件读写有了基本的理解。继续学习Delphi的高级特性,如内存映射文件、异步I/O等,可以帮助你...
本指南将深入探讨Java中的文件读写API,包括常用的方法、性能分析以及不同方式之间的对比。以下是对相关知识点的详细说明: 1. **File类**: Java中的`java.io.File`类是文件和目录路径名的抽象表示形式。它提供了...
本文将深入探讨如何使用C++来读写ini配置文件,主要参考提供的"rwconfig.cpp"和"rwconfig.h"源代码。 首先,我们需要了解ini文件的基本结构。它由一系列节(Section)组成,每个节内包含若干键值对(Key-Value ...
在多线程编程中,通过并发读写文件,可以显著提高整体的处理速度,特别是在现代多核处理器上。然而,这也带来了同步和竞态条件的问题,需要精心设计以确保正确性和性能。 描述中提到的“源代码来源于网络”,意味着...
在C#编程语言中,文件读写操作是基础且至关重要的功能,允许程序与本地文件系统交互。本文将深入探讨如何在C#中执行文件的读写操作,以及如何进行文件删除。 首先,让我们了解C#中用于文件操作的主要类:`System.IO...
- .NET框架中的`FileStream`类,支持读写文件。 4. 缓冲机制: - 缓冲区可以减少频繁的磁盘I/O操作,提高性能。 - C++和Java中的缓冲流类,如`BufferedInputStream`、`BufferedOutputStream`、`BufferedReader`...
在MFC(Microsoft Foundation Classes)环境下,利用Visual Studio 2015进行CSV文件的读写操作,可以方便地处理这类数据。本文将详细介绍如何在VS2015的MFC项目中实现CSV文件的读写功能。 1. **CSV文件结构** CSV...