Java File类

欢迎提出意见和错误,大家一起进步。

实例化文件对象

//创建File对象
File file = new File("/Users/apple/Downloads/123.txt");

能否读

//是否可以读这个文件     可以读返回true,反之返回False
System.out.println(file.canRead());

能否写

//是否可以写这个文件         可以写返回true,反之返回False
System.out.println(file.canWrite());

能否执行

//是否可以执行这个文件   可以执行返回true,反之返回False
System.out.println(file.canExecute())

是否为文件

//该路径是否为文件   是返回true,反之返回False
System.out.println(file.isFile());

是否为文件夹

//该路径是否为文件夹		是返回true,反之返回False
System.out.println(file.isDirectory());

是否为绝对路径

//该路径是否为绝对路径		是返回true,反之返回False
System.out.println(file.isAbsolute());

该路径是否隐藏

//该路径是否隐藏		是返回true,反之返回False
System.out.println(file.isHidden());

创建新的文件

//创建一个新文件,如果文件已经存在返回False,创建成功返回true
System.out.println(file.createNewFile());

创建新的随机数文件

//创建一个指定前后缀和路径的文件,文件名称的格式:前缀+随机数+后缀
//new为前缀  .txt是后缀  new file是文件对象
System.out.println(File.createTempFile("new",".txt", new File("/Users/apple/Downloads/电影")));

删除文件

//删除一个文件、目录(目录必须为空)  删除成功返回true,反之返回false
System.out.println(new File("ceshi.txt").delete());

路径是否存在

//判断路径是否存在   存在返回true  反之返回false
System.out.println(file.exists());

上一次修改时间

//上一次的修改时间  毫秒格式  可以转换为年月日的格式
//年月日格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//转换时间格式
String modifiedTime=sdf.format(file.lastModified());
//输出上次修改时间
System.out.println(modifiedTime);

获得绝对路径

//获取绝对路径的文件对象格式 返回文件对象
File a= file.getAbsoluteFile();

//输出绝对路径的字符串格式   返回字符串
String b = file.getAbsolutePath();

获得路径的名字

//输出文件的名称  例如:‘/Users/apple/Downloads/123.txt’的名字是‘123.txt’
System.out.println(file.getName());

获得路径的字符串格式

//输出该路径的字符串格式   例如:‘/Users/apple/Downloads/123.txt’的字符串格式是‘/Users/apple/Downloads/123.txt’
//从File对象转换为String对象
String path = file.getPath();

获得父母的信息

//输出父母的绝对路径  字符串格式
String parent = file.getParent();
//输出父母的绝对路径  文件对象格式
File parentFile = file.getParentFile();

路径的大小

//文件的大小  返回的单位是字节
System.out.println(file.length());

创建文件夹

//创建单个文件夹,如果父类文件夹不存在,创建失败
file.mkdir();
//创建多个文件夹,如果父类文件夹不存在,先创建父类文件夹,再创建子类文件夹
file.mkdirs();

路径重命名

//如果两个路径在同一文件夹下,更改文件名,如果不是同一文件夹下,相当于剪切前者到后者
System.out.println(file.renameTo(new File("/Users/apple/Desktop/其他/1/2.txt")));

设置执行权限

//设置可执行
file.setExecutable(true);

设置上一次修改时间

//设置上一次修改的时间
file.setLastModified(new Date().getTime());

设置可读

//设置可读
file.setReadable(true);

设置可写

//设置可写
file.setWritable(true);

设置只读

//设置仅可读
file.setReadOnly();

获得文件夹下的内容

 //获得文件夹下的所有文件和文件夹  字符串格式
String[] files = file.list();
//输出
for (String f : files) {
    System.out.println(f);
   }
   
//获得文件夹下的所有文件和文件夹   文件对象格式
File[] files2 = file.listFiles();
//输出
for (File f : files2) {
    System.out.println(f);
}

获得文件夹下符合条件的内容

 //获得文件夹下符合条件的文件和文件夹  字符串格式
String[] files1 = file.list(new FilenameFilter() {
    @Override
    public boolean accept(File dir, String name) {
        //dir是文件夹,name是文件的名字
        //返回文件名包含'比赛'的文件
        return name.contains("比赛");
    }
});
//输出
for (String f :
        files1) {
    System.out.println(f);
}


//获得文件夹下符合格式的文件和文件夹  文件对象格式
//下面重载函数的区别是:过滤器不一样,参数不一样,一个是文件对象,一个是文件夹的文件对象和字符串文件名
File[] files3 = file.listFiles(new FilenameFilter() {
     @Override
     public boolean accept(File dir, String name) {
         //dir是文件夹,name是文件的名字
         //返回文件名包含'比赛'的文件
         return name.contains("比赛");
     }
 });
//输出
for (File f : files3) {
    System.out.println(f);
}

File[] files4 =file.listFiles(new FileFilter() {
    @Override
    public boolean accept(File pathname) {
        //返回文件路径包含'比赛'的文件
        return pathname.getParent().contains("比赛");
    }
});
//输出
for (File f : files4) {
    System.out.println(f);
}

综合案例(输入一个路径,返回名称、最后修改时间、大小等信息)

public static void main(String[] args) {

        //路径
        String path = "/Users/apple/Downloads/电影";

        //创建File对象
        File file = new File(path);

        //如果路径存在
        if (file.exists()) {
            //输出路径的信息
            System.out.println("名称\t\t\t类型\t\t\t最后修改时间\t\t\t大小\n");
            System.out.println(file.getName() + "\t\t" + getPathType(file) + "\t\t" + getPathLastModifiedTime(file) + "\t\t"
                    + getPathSizeWithStyle(file));
        } else {
            System.out.println("路径不存在");
        }
    }


    //获得路径的类型
    public static String getPathType(File file) {
        if (file.isDirectory()) {
            return "文件夹";
        } else if (file.isFile()) {
            return "文件";
        } else {
            return "未知";
        }
    }

    //获得路径上一次修改时间
    public static String getPathLastModifiedTime(File file) {

        //年月日格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        //获得日历实例
        Calendar cal = Calendar.getInstance();

        //获取上次修改时间毫秒格式
        cal.setTimeInMillis(file.lastModified());

        //把毫秒格式转换为年月日格式
        String time = sdf.format(cal.getTime());

        return time;
    }

    //获取路径的大小,附带单位
    public static String getPathSizeWithStyle(File file) {

        //添加单位后的路径
        String size = "";

        //路径的字节数量
        long fileSize = getPathSize(file);

        //结果保留小数点2位
        DecimalFormat df = new DecimalFormat("#.00");

        //根据字节的大小返回不同单位
        if (fileSize < 1024) {
            return fileSize + "BT";
        } else if (fileSize < 1048576) {
            size = df.format((double) fileSize / 1024) + "KB";
            return size;
        } else if (fileSize < 1073741824) {
            size = df.format((double) fileSize / 1048576) + "MB";
            return size;
        } else {
            size = df.format((double) fileSize / 1073741824) + "GB";
            return size;
        }
    }

    //获取路径的字节数量
    public static long getPathSize(File file) {

        //如果路径是文件,直接返回字节数量
        if (file.isFile()) {
            return file.length();
        }

        //如果路径是文件夹,迭代相加后返回字节数量
        else {
            //获得文件夹下面的内容
            final File[] children = file.listFiles();

            //路径字节的总数量
            long total = 0;

            //遍历路径
            if (children != null) {
                for (final File child : children)
                    //把每个路径字节相加
                    total += getPathSize(child);
            }

            //返回路径的字节数量
            return total;
        }
    }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值