本例子的功能是查找目录(包括所有子目录)下所有指定后缀的文件(如果不指定后缀则为全部文件)并替换内容
看代码:
package file;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 查找目录(包括所有子目录)下所有html文件并替换内容
* @author zxd
*
*/
public class FileViewer {
public static void main(String[] args) throws IOException {
List arrayList = FileViewer.getListFiles("D:/java/workspace/vss/vss/srm/crealib/api","html",true);
// List arrayList = FileViewer.getListFiles("D:/yfb_doc","html",true);
if(arrayList.isEmpty())
{
System.out.println("没有符合要求的文件");
}
else
{
StringBuffer message = new StringBuffer();
message.append("符合要求的文件数:");
message.append(arrayList.size());
message.append("\r\n");
//message += "符合要求的文件数:" + arrayList.size() + "\r\n";
System.out.println(message);
for (Iterator i = arrayList.iterator(); i.hasNext();)
{
String temp = (String) i.next();
String newfilecontent = readfile(temp).replaceAll("<B>FRAMES</B>", "");
java.io.RandomAccessFile file = new java.io.RandomAccessFile(temp, "rw" );
file.setLength( 0 );
// 写入新的文件内容
appendMethod(temp,newfilecontent);
System.out.println(temp);
//message += temp + "\r\n";
message.append(temp + "\r\n");
}
//appendMethod("d:/ajax/menu.txt",message);
}
}
public static List<String> fileList = new ArrayList<String>();
/**
*
* @param path 文件路径
* @param suffix 后缀名
* @param isdepth 是否遍历子目录
* @return
*/
public static List getListFiles(String path, String suffix, boolean isdepth)
{
File file = new File(path);
return FileViewer.listFile(file ,suffix, isdepth);
}
public static List listFile(File f, String suffix, boolean isdepth)
{
//是目录,同时需要遍历子目录
if (f.isDirectory() && isdepth == true)
{
File[] t = f.listFiles();
for (int i = 0; i < t.length; i++)
{
listFile(t[i], suffix, isdepth);
}
}
else
{
String filePath = f.getAbsolutePath();
if(suffix !=null)
{
int begIndex = filePath.lastIndexOf(".");//最后一个.(即后缀名前面的.)的索引
String tempsuffix = "";
if(begIndex != -1)//防止是文件但却没有后缀名结束的文件
{
tempsuffix = filePath.substring(begIndex + 1, filePath.length());
}
if(tempsuffix.equals(suffix))
{
fileList.add(filePath);
}
}
else
{
//后缀名为null则为所有文件
fileList.add(filePath);
}
}
return fileList;
}
//读取文件内容
public static String readfile(String path){
String readStr = "";
try{
String read = "";
String filepath = path; // 得到文本文件的路径
File file = new File(filepath);
FileReader fileread = new FileReader(file);
BufferedReader bufread = new BufferedReader(fileread);
while((read= bufread.readLine())!=null){
read = read + " \r\n " ;
readStr = readStr + read;
}
}catch(Exception e){
System.out.println(e.getMessage());
}
return readStr; // 返回从文本文件中读取内容
}
/**
* 方法追加文件:使用FileWriter
* @param fileName
* @param content
*/
public static void appendMethod(String fileName, String content)
{
try
{
//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content + "\r\n");
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
分享到:
相关推荐
Word文件内容批量替换官方版是一款专业的文字批量替换工具,很多朋友在工作的时候都需要对Word文档进行编辑处理,如果想要将某个文档中的字符内容修改为其它文字,可以试试小编带来的这款Word文件内容批量替换软件,...
标题提到的"替换目录下面所有文件、子目录文件名字的小工具"是一种实用程序,它能够帮助用户批量修改指定目录及其子目录下所有文件和子目录的文件名。这种工具通常用于统一文件命名规范,更新大量文件的元数据,或者...
"遍历"在此语境下意味着程序会逐个检查指定文件夹下的所有文件,包括子文件夹中的文件。遍历文件系统是一种基本的文件操作,通常通过递归函数实现,确保不会遗漏任何符合要求的文件。 "字符串替换"是具体的操作过程...
本篇文章将详细讲解如何编写一个Java应用程序,实现将一个包含多个子目录和文件的目录复制到另一个指定的目录下的功能。 首先,我们需要了解基本的文件和目录操作。Java的`java.io`包提供了丰富的类来处理文件和...
总结来说,使用Win32 API查找目录下的所有文件,包括子目录,涉及到的关键API包括`FindFirstFile()`和`FindNextFile()`,通过递归调用来实现对子目录的遍历。这种方法简单直接,适用于大多数情况,但对大型目录可能...
例如,要在一个目录及其所有子目录下替换所有文本文件中的"旧文本"为"新文本",可以使用以下命令: ```cmd for /r %d in (*) do findstr /v /i /c:"旧文本" "%d" > "%d.new" && move /y "%d.new" "%d" ``` 这段...
这个工具的主要功能是允许用户指定一个目录,然后在这个目录及其子目录下的所有文件中进行批量查找和替换操作。这样的功能在软件开发、文档编辑、代码管理等场景中非常实用,可以极大地提高工作效率。 首先,我们...
标题中的“替换目录下面所有文件、子目录文件名字的小工具(支持NTFS分区)replacefilename.rar”是一款实用程序,主要用于批量更改指定目录及其子目录下的文件和子目录的名称。这款工具特别强调了对NTFS分区的支持,...
综上所述,批量替换文件名里的字符包括子目录是一个综合性的任务,涉及到了文件系统操作、递归算法、正则表达式、编程语言特性、错误处理、用户交互等多个方面的IT知识。理解并掌握这些知识点对于日常的文件管理和...
1. 遍历指定目录或递归遍历所有子目录,查找所有.zip文件。 2. 使用`unzip`命令提取压缩包中的指定文件到临时目录。 3. 替换临时目录中的目标文件。 4. 使用`zip`命令重新压缩修改后的文件,覆盖原有的.zip文件。 `...
标题 "移动所有子目录下的文件到指定文件" 涉及到的是文件管理和命令行操作,这在IT行业中是基础且重要的技能。尤其对于系统管理员、开发者或是进行自动化任务的人来说,掌握这类技能至关重要。在Linux、Unix或者Mac...
这个程序不仅遍历了指定目录下的所有文件,还递归地处理了子目录。同时,它还输出了每个文件的完整路径和内容。如果你需要在其他操作系统(如Linux或MacOS)上运行,只需确保你的编译器支持`std::filesystem`库,...
4、在批量替换时,可以选择文件夹,并且可以选择是否包含子目录 5、还可以设置是否匹配大小写 亮点:替换前可以设置是否备份文件,保证了替换的安全性。 另外包含的update.exe软件可以随时将该软件更新为最新版本...
1. **文件遍历**:工具需要能够遍历指定目录及其子目录,找出所有符合特定类型的文件(如文本文件)。这可以通过递归函数来实现,递归遍历每一层目录并收集文件路径。 2. **文件读取**:找到的每个文件需要被打开并...
作为一个强大的文本处理工具,它不仅支持单个文件的文本替换,更可以一次性处理整个目录下的所有文件,甚至包括子目录中的文件。这使得在处理大批量文件时,Ultrareplace成为了一个不可或缺的助手。 在使用...
- `/S`:递归替换目标目录及其所有子目录内的文件。但不能与 `/A` 选项一起使用。 - `/W`:等待用户插入磁盘后再执行命令。这在需要更换磁盘进行替换操作的情况下有用。 - `/U`:仅替换目标文件日期早于源文件的文件...
通过`os.listdir()`可以获取指定目录下的所有文件和子目录名,然后遍历这些文件,使用`os.rename()`函数来改变文件名。需要注意的是,新文件名应避免与已有文件名冲突,否则会引发错误。 批量替换文件内容则涉及...
在Java编程中,有时我们需要对已经存在的ZIP文件进行操作,比如替换其中的某个文件,而无需将整个ZIP文件解压后再重新压缩。这样的需求在处理大量数据或优化性能时尤其重要,因为它避免了创建临时文件和多次I/O操作...
1. **文件搜索**:软件会遍历指定的目录及其子目录,寻找符合特定条件(如同名)的文件。 2. **备份机制**:在替换文件前,为了防止数据丢失,软件通常会自动创建原文件的备份。 3. **比较功能**:在替换文件前,...