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

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中没有,还得通过其他的方式获得

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月28日
  • 已采纳回答 7月28日

悬赏问题

  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号