`

java缓存读取文件的例子

阅读更多
缓存和缓冲不同,缓存是用在多次操作时,他要占用比较大的内存,保存一些存取费时的但比较常用的数据。
以下是对文件读取使用缓存
缓存类Cache.java
package useBuffer;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class Cache {
	private ArrayList list = new ArrayList();  //保存从文件中读取的内容
	public Cache(File file){
		try {
			FileReader fr = new FileReader(file);
			BufferedReader br = new BufferedReader(fr);
			String line ;
			while((line = br.readLine())!=null){
				list.add(line);
			
			}
			br.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public String getLine(int n){
		if(n<0)return null;
		return (String) ((n<list.size())? list.get(n):null);
	}
}

测试类:
package useBuffer;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CacheTest {

	private Cache cache;
	public static void main(String[] args) {

		CacheTest t = new CacheTest();
		File file = new File("E:\\Eclipse workspace\\DataStructSample\\src\\useBuffer\\BufferTest.java");
		long start = System.currentTimeMillis();
		t.search1(file, "//.+");   //匹配注释
		System.out.println("没有用缓存耗时:"+(System.currentTimeMillis()-start)+"MS");
		
		start = System.currentTimeMillis();
		t.search2(file, "//.+");   //匹配注释
		System.out.println("用缓存耗时:"+(System.currentTimeMillis()-start)+"MS");
	}

	public void search1(File file,String pattern){  //不使用缓存
		try {
			FileReader fr = new FileReader(file);
			BufferedReader br = new BufferedReader(fr);
			String line;
			Pattern searched = Pattern.compile(pattern);
			Matcher lm;
			int lines = 0; //记录注释行数
			while((line = br.readLine())!=null){
				lm = searched.matcher(line);
				if(lm.find()) lines ++;
			}
			System.out.println(lines);
			br.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public void search2(File file,String pattern){ //使用缓存,
			
		if(cache==null)
			cache = new Cache(file);
			String line;
			Pattern searched = Pattern.compile(pattern);
			Matcher lm;
			int i = 0;
			int lines = 0;
			while((line = cache.getLine(i++))!=null){
				lm = searched.matcher(line);
				if(lm.find()) lines ++;
			}
			System.out.println(lines);
		
	}
	
	
	
}

在运行一次或者输入文件较小时,差别不大
分享到:
评论

相关推荐

    java 通过文件实现缓存

    java实现缓存可以通过读取本地文件的方式实现,改代码就是通过读取本地文件实现缓存的简单例子

    java平台读写ini配置文件(可读网络配置文件)

    在Java平台上,处理配置文件是开发过程中的常见任务。...综上所述,Java平台可以通过`ini4j`库轻松地读写INI配置文件,无论是本地还是网络上的文件。合理使用这些功能,可以帮助开发者更高效地管理和维护应用的配置。

    java 缓存机制

    JSP文件中的例子展示了如何使用`HttpSession`来保持用户会话,通过`getAttribute`和`setAttribute`方法来存储和读取数据。而Cookie则是一种客户端存储机制,通过设置`setDomain`和`setMaxAge`,可以在多个子域之间...

    java 缓存系统实战(安装和实例代码)

    Java 缓存系统实战主要涉及的是使用 Memcached 这一开源缓存框架,它是一个高性能、分布式的内存对象缓存系统。Memcached 提供了 key-value 存储,旨在优化速度差异较大的硬件或软件之间的数据交互。以下是关于 ...

    java文件读取方法.doc

    在Java编程语言中,文件读取是常见的任务,可以用于处理文本文件、二进制文件等。本篇文章将详细介绍四种不同的方法来读取文件内容,包括按字节、字符、行以及随机读取。 1. **按字节读取文件内容**: 这种方法...

    servlet 文件上传下载例子

    这个"Servlet 文件上传下载例子"将演示这些概念的实际应用,帮助开发者了解如何在Java Web环境中处理文件操作。通过学习和实践,你可以创建一个可靠的文件服务器,支持用户安全、高效地上传和下载文件。

    java读取 配置 xml文件

    本篇文章将深入探讨如何在Java中读取XML配置文件,以及如何实现一个简易版的Spring框架。 首先,我们需要导入Java的DOM(Document Object Model)库,它提供了处理XML文档的标准API。在Java中,我们通常使用`javax....

    JAVA文件学习,文件搜索器

    1. **文件路径处理**:Java中的`java.io.File`类用于创建、读取、写入和删除文件或目录,处理路径名,并提供有关文件的基本信息。 2. **I/O流**:Java的I/O流系统是进行文件读写的核心,包括字节流(如`InputStream...

    rmi远程调用读取文件

    以下是一个简单的RMI文件读取服务的例子: 1. **服务端(Server)**: - 定义远程接口:创建一个名为`FileService`的接口,其中包含一个`readFile(String filePath)`方法,返回文件内容。 - 实现远程接口:创建一...

    Java将图片数据读取到缓冲区中的例子.rar

    Java将图片数据读取到缓冲区中的例子,借助图像的缓冲区,可实现像素级的图像数据处理,是一种处理图片数据很实用的一种方法,可实现较为复杂的图像变换加工,本例只是演示如何创建图像缓冲区,并没有其它的任何图像...

    java读写文件

    ### Java读写文件知识点详解 #### 一、Java文件读写的背景及基本概念 Java语言在设计之初,并未直接提供对文本文件处理的支持。为了填补这一空白,Java引入了`Reader`和`Writer`两个核心抽象类。这些类的设计是...

    java操作Hadoop源码之HDFS Java API操作-上传文件

    在Java编程环境中,Hadoop分布式文件系统(HDFS)提供了丰富的Java API,使得开发者能够方便地与HDFS进行交互,包括文件的上传、下载、读写等操作。本篇文章将详细探讨如何使用HDFS Java API来实现文件上传的功能。 ...

    java下载ftp文件.txt

    根据给定文件的信息,本文将详细介绍如何利用Java代码来实现从FTP服务器下载文件的过程,并对代码中的关键步骤进行深入解析。 ### Java下载FTP文件 在实际应用开发中,经常需要与FTP服务器进行交互,比如上传文件...

    科大讯飞语音识别java例子 输入音频文件输出音频文件中的内容可编辑的文字内容

    在本文中,我们将深入探讨如何使用科大讯飞的语音识别技术与Java编程语言结合,以实现将输入的音频文件转换为可编辑的文字内容。科大讯飞是中国领先的语音技术提供商,其API提供了高效且准确的语音转文本功能,广泛...

    JAVA-memcached简单例子

    Java与Memcached的结合使用是分布式缓存领域中常见的技术实践。Memcached是一款高性能、分布式内存对象缓存系统,它可以将数据存储在内存中,从而加快读取速度,减轻数据库的负担。Java作为广泛使用的编程语言,有...

    缓存List并写入文件持久化.zip

    反序列化时,我们可以使用`ObjectInputStream`从文件中读取并还原List: ```java public static void loadCache() { try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("cache.ser")); ...

    DirectXSDK读取.X模型文件的例子

    在这个例子中,我们看到一个关于如何在Delphi环境下使用DirectX SDK来读取`.X`模型文件的教程。`.X`文件格式是Microsoft DirectX提供的一种用于存储3D模型、动画和材质的数据格式。这种格式易于处理,适合初学者和...

    java读取properties文件的方法实例分析

    本篇文章将深入探讨如何在Java中读取`.properties`文件,无论它们位于项目内部还是外部。 1. **不在项目中读取.properties文件** 当`.properties`文件位于项目的外部时,我们需要使用文件系统路径来访问它。下面...

    自定义进度复制文件例子.rar

    这两个类是Java的IO库中的核心类,用于读取和写入文件。我们需要打开源文件的输入流,然后创建目标文件的输出流,通过字节流逐个读写数据。 2. 进度计算:为了实现进度条,我们需要知道文件的总大小,并跟踪已经...

    java文件的简单读写操作方法实例分析

    Java文件的读写操作是Java I/O流中的基础内容,通常是指通过Java程序对文件系统中的文件进行读取和写入操作。在Java中,文件的读写通常使用java.io包中的相关类和接口来完成,其中最为常见的就是FileInputStream和...

Global site tag (gtag.js) - Google Analytics