自用的文件对象Bo和Po实体类

创建一个自用的文件对象Bo和Po实体类

通过构造函数读取File的信息,减少工作量

po类

package com.faker.app.po;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributeView;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Date;

/**
 * <p>Title: Python文件信息及属性实体类 - PyFileAttrPo</p>
 *
 * <p>Description:Python文件信息及属性实体类</p>
 *
 * <p>Copyright: Copyright Faker(c) 2018</p>
 *
 * <p>Company: 无</p>
 *
 * @author 你猜
 *
 * @version 1.0
 */
public class PyFileAttrPo {

    /** 文件本身 */
    private File file;

    /** 文件名 */
    private String fileName;

    /** 文件名前缀 */
    private String fileNamePre;

    /** 文件名后缀 */
    private String fileNameSuffix;

    /** 文件创建时间戳 */
    private Date creationTime;

    /** 文件最后访问时间戳 */
    private Date lastAccessTime;

    /** 文件最后修改时间戳 */
    private Date lastModifiedTime;

    /** 文件大小 */
    private Long fileSize;

    /**
     * 无参构造
     */
    public PyFileAttrPo() {
    }

    /**
     * 将文件转化为文件属性
     * @param file
     */
    public PyFileAttrPo(File file) {
        //获取文件
        try {
            this.file = file;
        } catch (Exception e) {
            e.printStackTrace();
        }
        //获取文件名和后缀
        try {
            this.fileName = file.getName();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //文件名后缀
        try {
            this.fileNameSuffix = this.fileName.substring(this.fileName.lastIndexOf(".") + 1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //文件名前缀
        try {
            this.fileNamePre = this.fileName.substring(0,this.fileName.lastIndexOf("."));
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            // 获取将要操作的文件
            Path testPath = Paths.get(file.getPath());
            BasicFileAttributeView basicView = Files.getFileAttributeView(
                    testPath , BasicFileAttributeView.class);
            // 获取访问基本属性的BasicFileAttributes
            BasicFileAttributes basicAttribs = null;
            try {
                basicAttribs = basicView.readAttributes();
                //创建时间
                try {
                    this.creationTime = new Date(basicAttribs.creationTime().toMillis());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                //最后访问时间
                try {
                    this.lastAccessTime = new Date(basicAttribs.lastModifiedTime().toMillis());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                //最后修改时间
                try {
                    this.lastModifiedTime = new Date(basicAttribs.lastModifiedTime().toMillis());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                //文件大小
                try {
                    this.fileSize = basicAttribs.size();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (Exception e) {e.printStackTrace();}
    }

    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public String getFileNamePre() {
        return fileNamePre;
    }

    public void setFileNamePre(String fileNamePre) {
        this.fileNamePre = fileNamePre;
    }

    public String getFileNameSuffix() {
        return fileNameSuffix;
    }

    public void setFileNameSuffix(String fileNameSuffix) {
        this.fileNameSuffix = fileNameSuffix;
    }

    public Date getCreationTime() {
        return creationTime;
    }

    public void setCreationTime(Date creationTime) {
        this.creationTime = creationTime;
    }

    public Date getLastAccessTime() {
        return lastAccessTime;
    }

    public void setLastAccessTime(Date lastAccessTime) {
        this.lastAccessTime = lastAccessTime;
    }

    public Date getLastModifiedTime() {
        return lastModifiedTime;
    }

    public void setLastModifiedTime(Date lastModifiedTime) {
        this.lastModifiedTime = lastModifiedTime;
    }

    public Long getFileSize() {
        return fileSize;
    }

    public void setFileSize(Long fileSize) {
        this.fileSize = fileSize;
    }

    @Override
    public String toString() {
        return "PyFileAttrPo{" +
                "file=" + file +
                ", fileName='" + fileName + '\'' +
                ", fileNamePre='" + fileNamePre + '\'' +
                ", fileNameSuffix='" + fileNameSuffix + '\'' +
                ", creationTime=" + creationTime +
                ", lastAccessTime=" + lastAccessTime +
                ", lastModifiedTime=" + lastModifiedTime +
                ", fileSize=" + fileSize +
                '}';
    }
}

感觉try/catch块用得太多了…

Bo类 主要是把文件时间和大小转换一下

package com.faker.app.bo;

import com.faker.app.po.PyFileAttrPo;

import java.io.File;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * <p>Title: Python文件信息及属性实体类 - PyFileAttrBo</p>
 *
 * <p>Description:Python文件信息及属性实体类,新增了时间格式化和中文说明</p>
 *
 * <p>Copyright: Copyright Faker(c) 2018</p>
 *
 * <p>Company: 无</p>
 *
 * @author 你猜
 *
 * @version 1.0
 */
public class PyFileAttrBo extends PyFileAttrPo{

    /** 文件创建时间 */
    private String creationTimeStr;

    /** 文件最后访问时间 */
    private String lastAccessTimeStr;

    /** 文件最后修改时间 */
    private String lastModifiedTimeStr;

    /** 文件大小 */
    private String fileSizeStr;

    public String getCreationTimeStr() {
        try {
            this.creationTimeStr = stampToDate(super.getCreationTime());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return creationTimeStr;
    }

    public void setCreationTimeStr(String creationTimeStr) {
        this.creationTimeStr = creationTimeStr;
    }

    public String getLastAccessTimeStr() {
        try {
            this.lastAccessTimeStr = stampToDate(super.getLastAccessTime());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return lastAccessTimeStr;
    }

    public void setLastAccessTimeStr(String lastAccessTimeStr) {
        this.lastAccessTimeStr = lastAccessTimeStr;
    }

    public String getLastModifiedTimeStr() {
        try {
            this.lastModifiedTimeStr = stampToDate(super.getLastModifiedTime());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return lastModifiedTimeStr;
    }

    public void setLastModifiedTimeStr(String lastModifiedTimeStr) {
        this.lastModifiedTimeStr = lastModifiedTimeStr;
    }

    public String getFileSizeStr() {
        try {
            this.fileSizeStr = getPrintSize(super.getFileSize());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fileSizeStr;
    }

    public void setFileSizeStr(String fileSizeStr) {
        this.fileSizeStr = fileSizeStr;
    }

    public PyFileAttrBo() {
    }

    /**
     * 文件的构造函数,自动生成文件信息
     * @param file
     */
    public PyFileAttrBo(File file) {
        super(file);
        try {
            this.creationTimeStr = stampToDate(super.getCreationTime());
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            this.lastAccessTimeStr = stampToDate(super.getLastAccessTime());
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            this.lastModifiedTimeStr = stampToDate(super.getLastModifiedTime());
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            this.fileSizeStr = getPrintSize(super.getFileSize());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 格式化时间
     * @param date 时间
     * @return 格式化后的时间时间
     */
    public String stampToDate(Date date){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return  simpleDateFormat.format(date);
    }

    /**
     * 将文件字节数转换为kb/mb/Gb等
     * @param size 字节数
     * 这块引用了https://blog.csdn.net/layman1024/article/details/77988079
     * @return 转换后的字符串
     */
    public String getPrintSize(long size) {
        // 如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义
        double value = (double) size;
        if (value < 1024) {
            return String.valueOf(value) + "B";
        } else {
            value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
        }
        // 如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位
        // 因为还没有到达要使用另一个单位的时候
        // 接下去以此类推
        if (value < 1024) {
            return String.valueOf(value) + "KB";
        } else {
            value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
        }
        if (value < 1024) {
            return String.valueOf(value) + "MB";
        } else {
            // 否则如果要以GB为单位的,先除于1024再作同样的处理
            value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
            return String.valueOf(value) + "GB";
        }
    }

    @Override
    public String toString() {
        return "PyFileAttrBo{" +
                "creationTimeStr='" + creationTimeStr + '\'' +
                ", lastAccessTimeStr='" + lastAccessTimeStr + '\'' +
                ", lastModifiedTimeStr='" + lastModifiedTimeStr + '\'' +
                ", fileSizeStr='" + fileSizeStr + '\'' +
                "} " + super.toString();
    }
}

最后读取到的对象大概是这个样子的(file已set为null了)

{
 "file": null,
 "fileName": "Python_main.py",
 "fileNamePre": "Python_main",
 "fileNameSuffix": "py",
 "creationTime": 1543471776025,
 "lastAccessTime": 1543475322461,
 "lastModifiedTime": 1543475322461,
 "fileSize": 6562,
 "creationTimeStr": "2018-11-29 14:09:36",
 "lastAccessTimeStr": "2018-11-29 15:08:42",
 "lastModifiedTimeStr": "2018-11-29 15:08:42",
 "fileSizeStr": "6.4KB"
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值