在公司经常做一些文件分析及修改的工具。大多数的同事用vb,也有人用perl。我刚开始也学着用vb和perl来做。后来做了几次后发现,对于文件操作和字符串匹配Java更有优势。perl的正则表达式是很强大,但是一般的应用根本用不着那么深的分析。而vb对于字符串的操作实在是不敢恭维。举个简单的例子,判断一个字符串是否包含一个子串。java中只需要
String s=“Hello,World”;
if(s.contains("llo")){}就可以了
而vb则需要先判断子串在全串中的位置,根据返回的值来判断是否包含。vb中连截取子串都感觉很繁琐。perl语言实在是太随心所欲了,好多的东西是用特定的符合来表示,极其考验我的记忆力。
下面写个简单的文件读写操作,算是我工作常用的一个模板。包括了文件过滤器,目录及文件的递归遍历,文件的读写操作和字符串的分析。没有好的例子,所以不用到正则表达式,其实Java中也有正则表达式匹配的内容。不过根据个人经验,String类的方法已经足够强大。文件读写用的是字符流(以前老搞不清楚字符流跟字节流到底指什么,工作后才恍然大悟)
程序从目录开始分析,通过文件过滤器把根目录中的文件(包括子目录)放入文件数组。如果是目录递归执行上一过程,文件则进行读取操作。
Java把目录也看做文件,可以用.isDirectory()方法来判断是否目录
import java.io.*;
class EFileFilter implements FileFilter{//一个文件过滤器
public boolean accept(File f){
if(!f.getName().endsWith(".java")){//这里设计过滤文件的规则
return true;
}
return false;
}
}
public class RFile {
public static void directory(File f){//目录分析操作
File[] fl=f.listFiles(new EFileFilter());//将目录中的文件用过滤器过滤后的文件赋给fl数组。
//File[] fl=f.listFiles();如果不带参数则把目录中的所有文件赋给fl文件数组。
for(int i=0;i<fl.length;i++){
if(fl[i].isDirectory()){//如果此文件是目录的话,递归调用directory()方法,使能够遍历
directory(fl[i]);//递归
}
else{
readFile(fl[i]);//进入单个文件的读写操作
}
}
}
public static void readFile(File f){//单个文件的读写操作
try{
StringBuffer stb=new StringBuffer();//相比String能提高较大的性能,这点在做Lucene时候体会较深
File newD=new File("d:\\new\\");//新文件存放的目录
if(!newD.isDirectory()){
newD.mkdirs();//如果目录不存在则创建
}
File newFile=new File(newD.getAbsoluteFile()+f.getName());//新文件
FileWriter fw=new FileWriter(newFile);//文件写字符流
BufferedReader br=new BufferedReader(new FileReader(f));//文件读字符流
String s;
while((s=br.readLine())!=null){
System.out.println(s);//打印文件的内容
if(bString(s)){//调用分析字符串的方法
stb.append(s);//如果满足条件则写到新文件中
}
}
fw.append(stb);
fw.close();//一定要记得关闭
}catch(Exception e){
e.printStackTrace();
}
}
public static boolean bString(String s){
//对于String,java有很多实用的方法,可以去查文档,下边注释掉的是我工作中经常用到的一些
/*if(s.startsWith("")||s.endsWith("")||s.contains("")||s.charAt(4)=='a'){
return true;
}*/
return true;
}
public static void main(String[] args) {
File fd=new File("d:\\");//定义要分析的目录
directory(fd);//从目录开始执行
}
}
分享到:
相关推荐
在本文中,我们将深入探讨文件读写和模板在IT领域的应用,特别是在处理数据元素时的实践。文件读写是程序与外部存储交互的关键操作,而模板则是C++中实现泛型编程的重要工具。下面将分别对这两个主题进行详细讲解。 ...
关于压缩包中的"poi读写word模板包",可能包含了一些示例代码或模板文件,帮助开发者理解如何使用Apache POI进行Word模板的读写。解压后,你可以查看这些文件来学习具体实现,包括如何查找和替换模板中的特定字符串...
在这个“VC++读写文件实例(QQ号码排序)”项目中,我们将探讨如何利用C++标准库中的文件流(fstream)进行文件读写,并结合冒泡排序算法对读取的数据进行处理。这既是一个学习VC++基本语法的好例子,也是理解数据...
此外,为了确保生成的合同内容准确无误,应做好异常处理,包括文件读写异常、数据格式异常等。同时,为了提高代码可维护性,可以采用模板引擎(如FreeMarker或Velocity)来处理模板,将模板内容与Java代码解耦。 本...
它很可能是实现配置文件读写功能的基础类定义。在C++中,使用宏可以实现代码的预处理,通过宏定义,我们可以创建模板化的函数或类,以处理配置文件中的键值对。宏可以避免重复的代码,并提供了一种方式来抽象出通用...
标题中的“跨平台的ini文件读写类”指的是一个编程工具或库,它允许程序员在不同的操作系统(如Windows、Linux、macOS等)上读取和写入ini配置文件。Ini文件是一种常见的文本格式,用于存储应用程序的设置和配置信息...
asp 读写 excel文件 asp读写.xls 组件+教程+组件安装+代码例子(可运行) 我看网上有人把 asp操作excel 技术总结 进行出售,刚在项目中用到,就分享出来,提供给大家免费试用。Ade下载地址: ...Microsoft Access ...
标题《12_文件读写.pdf》和描述《python电子课件》显示...综上所述,这份电子课件《12_文件读写.pdf》将通过实例和练习引导Python编程学习者掌握文件的基本操作、序列化与反序列化技术以及Excel文件处理等重要知识点。
在VC++编程中,API实例、对话框及文件编程是重要的技术组成部分,这些知识点对于开发高效、稳定的Windows应用程序至关重要。让我们逐一深入探讨这些主题。 **API编程实例** API(Application Programming ...
### C# 文件读写之 Word 读写技术详解 #### 一、背景介绍 在日常工作中,经常需要处理大量的文档,特别是在报表制作方面。如果报表结构简单,利用VBA(Visual Basic for Applications)引擎来定制Word模板并进行...
文件读写实现 在Linux下,我们可以使用`fstream`库来操作文件,而在Windows下,可能需要使用`GetPrivateProfileString`和`WritePrivateProfileString` API。为了实现跨平台,我们可以使用条件编译指令`#ifdef`来...
在实际应用中,Apache POI 的功能不仅限于简单的读写操作,还支持复杂的格式转换、样式调整和模板填充等功能,是 Java 开发者处理 Word 文件的强大工具。然而,需要注意的是,由于 `.doc` 文件格式的复杂性,处理...
在实际项目中,可能有多个结构体需要读写配置文件,此时可以创建一个通用的函数,如`readStruct(QSettings&, T&)`和`writeStruct(QSettings&, const T&)`,利用模板编程实现对不同结构体的读写操作。 最后,`001_...
本压缩包包含的是"20多个VC文件操作实例源码",旨在帮助初学者快速掌握VC中的文件操作技巧,从而能够更好地进行程序设计和开发。 文件操作是任何编程语言中的基础功能,对于VC也不例外。在VC中,文件操作通常涉及到...
总的来说,Java操作Word模板读写是一个涉及文件I/O、XML解析和文档格式理解的综合任务,通过Apache POI等库,我们可以方便地实现这一目标。在实际开发中,根据需求选择合适的方法和工具,以提高效率和灵活性。
1. **文件读写操作**:在JSP中,我们可以使用Java的`java.io`包来执行文件的读写操作。例如,`FileReader` 和 `BufferedReader` 用于读取文件,而 `FileWriter` 和 `BufferedWriter` 则用于写入文件。在留言板应用中...
3. **文件读写操作**: 使用`std::getline()`可以从文件中读取一行,`file >> variable`可以读取单个数据,如整数或字符串。写入数据则可以使用`file 。记得每次操作完文件后,使用`file.close()`关闭文件以释放...
- **读取模板**:首先,我们需要使用`XSSFWorkbook`(对于.xlsx文件)或`HSSFWorkbook`(对于.xls文件)来打开模板文件。 - **遍历模板**:通过`Sheet`对象获取模板中的所有`Row`和`Cell`,并读取其值。这通常是...
同时,这个实例也为我们提供了一个基础模板,可以在此基础上扩展其他功能,如文件的创建、删除、重命名等。在实际项目中,理解并掌握这样的文件系统操作,对于提高系统的稳定性和效率至关重要。