Plaudern
2018-12-16 09:17
采纳率: 33.3%
浏览 1.9k
已结题

java如何获取文件属性。

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

  • 收藏

3条回答 默认 最新

  • 迷茫中前进 2018-12-16 12:21
    已采纳

    时间比较匆忙,很多功能都没怎么封装,都写到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中没有,还得通过其他的方式获得

    已采纳该答案
    打赏 评论
  • Plaudern 2018-12-16 13:22

    非常感谢大佬,受教了

    打赏 评论
  • MAKE A DREAM COME TRUE 2018-12-17 11:53

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

    打赏 评论

相关推荐 更多相似问题