java 根据log文件中是否关键信息,来删除文档

发布于 2022-09-01 16:51:00 字数 1690 浏览 21 评论 0

在E:/desktop/1文件夹下有很多文件,见下
clipboard.png
需要对这些log文件进行处理,其中有些log文件中包含了很多无用信息,对于这些包含多无用信息的log文件处理是将这些文件删除掉。文件中的内容见下,比如

clipboard.png

下面是我写的程序,但不能删除文件,求大神指点下!
谢谢。。。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class ProcessMain {

    static String str = "";
    
    public static void main(String[] args) throws Exception{
        String path = "E:/desktop/1";        
        getDirList(path);
    }
    
    public static void read(String filepath)throws Exception{
        
        //read folder and iterate every subfile
        File f = new File(filepath);
        FileReader reader = new FileReader(f);
        BufferedReader br = new BufferedReader(reader);
        while((str = br.readLine()) != null){
            if(str.contains("NoID")){
                f.delete();
            }

        }
        br.close();
    }
    
    public static void getDirList(String path) throws Exception {
        File f = new File(path);
        if(f != null){
            if(f.isDirectory()){
              File[] fs = f.listFiles();
              for (File file : fs) {
                  if (file.isFile()) {
                      if(file.length() > 0)
                          read(file.toString());
                  } 
                  else
                      getDirList(file.getPath());
              }    
            }
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

赠我空喜 2022-09-08 16:51:00

主要改了下 read 方法,写了注释,其它地方你自己看着改呵。
这里 read 改名叫 checkToDelete 比较合适

    public static void read(File f) throws Exception {
        //read folder and iterate every subfile
        // 直接传参数就传 File 对象,不需要重新生成了
        // File f = new File(filepath);
        FileReader reader = new FileReader(f);
        BufferedReader br = new BufferedReader(reader);

        boolean shouldDelete = false;
        String str;
        while ((str = br.readLine()) != null) {
            if (str.contains("NoID")) {
                // 这里你的文件还是打开的,所以不能删除
                // 在这里应该做个标记,关闭之后再来删除
                // f.delete();
                shouldDelete = true;
                break;
            }

        }
        br.close();

        // 如果标记删除了,在 `close()` 之后就可以删了
        if (shouldDelete) {
            f.delete();
        }
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文