java如何获取文件属性。

就是我现在想获取项目内一个文件下所有txt文件的,名字,创建日期,还有里面的内容,并且内容只获取某一部分,比如说---end---之前的。求各位大佬教,我只是一个小白啊pwq

3个回答

时间比较匆忙,很多功能都没怎么封装,都写到main里面啦

1.首先是一个工具类

package cn.drc.file.filter;

import java.io.File;
import java.io.FilenameFilter;

/**
 * 顾名思义,过滤获得txt文件
 * @author drc
 *
 */
public class TxtFilter {
    /** 文件夹的路径 */
    private String path;

    public TxtFilter(String path) {
        this.path = path;
    }
    /**
     * 过滤
     * @return
     */
    public File[] doFilter() {
        // 1.根据路径,创建一个File
        File file = new File(path);
        // 2.判断该路径是否存在,如果存在,是否为一个目录
        if (!file.exists() && !file.isDirectory()) {
            throw new RuntimeException("要过滤file不存在,或者不是一个文件夹");
        }
        // 3.过滤txt文件
        File[] files = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".txt");
            }
        });

        return files;
    }

}

2.然后测试类(其实大部分功能都写这里啦)

package cn.drc.file.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import cn.drc.file.filter.TxtFilter;

public class FilterTest {
    public static void main(String[] args) throws IOException {
        // 1.创建Txt过滤器工具类,参数是路径名
        TxtFilter tf = new TxtFilter("test");
        // 2.过滤得到所有txt文件
        File[] files = tf.doFilter();

        // 3.遍历打印信息
        for(File file : files) {
            String name = file.getName();
            System.out.println("文件名:" + name);
            Long time = file.lastModified();
            String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(time));
            System.out.println("最后修改时间:" + date);
            /*
             * 4.获取内容还得通过流,异常就抛了
             */
            // 文件内容存放到字符串缓冲区
            StringBuilder content =new StringBuilder();
            // 读文件内容
            BufferedReader reader = new BufferedReader(new FileReader(file));
            String line = null;
            int endIdentifier = 0;
            while ((line=reader.readLine()) != null) {
                content.append(line);
                // 如果文件内容包含了结束标记,那么删除标记之后的内容,并退出
                if ((endIdentifier=content.indexOf("end")) != -1) {
                    content.delete(endIdentifier, content.length());
                    break;
                }
            }

            // 打印文件的内容
            System.out.println(content);
        }
    }
}

你要的那个文件创建时间的属性在File中没有,还得通过其他的方式获得

非常感谢大佬,受教了

感觉应该用IO流,你可以看一下IO流读写文件那方面的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐