File类文件的操作

File类可以对我们资源管理器里边的文件夹及文件进行一些操作

下边的是创建及使用的基本规则

import java.io.File;
import java.io.IOException;

public class FileTest {

    public static void main(String[] args) {

        // 硬盘上的任何文件在Java中都可以使用File 类表示

        // pathname表示文件的路径
        File f1 = new File("D:\\JavaTest\\1.txt");

        // 通过第一个\来获取第二个\的本来含义    转义字符

        File f2 = new File("D:/JavaTest/2.txt");

        System.out.println("f1文件是否存在:" + f1.exists());
        System.out.println("f2文件是否存在:" + f2.exists());

        File f3 = new File("3.txt");
        System.out.println("f3文件是否存在:" + f3.exists());

        // 绝对路径: 从盘符开始的路径 "D:\JavaTest\2.txt"
        // 相对路径: 从当前文件夹开始的路径 .\3.txt
        //      .表示当前文件夹, 可以省略
        //      相对路径是相对WorkSpace项目的文件夹为起始

        // 获取对象的路径
        System.out.println(f3.getAbsolutePath());

        // 不同的操作系统对路径中的分隔符有不同的表示方式
        // File.separator 常量能自动根据操作系统设置分隔符
        // 解决跨平台路径不一致的问题,推荐写法
        File f4 = new File("D:"+File.separator + "JavaTest" + File.separator + "3.txt");

        // 创建或者删除的时候,一定要先试用exists()判断文件是否存在
        // 只有文件存在时才进行删除操作,不存在才进行创建操作
        // 创建和删除操作可能需要延迟

        f1.delete();

        try {
            f1.createNewFile();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // 重命名
        File f5 = new File("D:JavaTest/5.txt");
        f1.renameTo(f5);
        // File 没有复制操作
        // File只操作文件,不处理里面的内容

    }
}

File的一些方法的使用


import java.io.File;

public class FileTest2 {

    public static void main(String[] args) {

        File f1 = new File("D:\\JavaTest");
        if (f1.exists()) {
            System.out.println("文件存在!");

            // 必须保证文件夹中没有任何内容才能删除
            boolean flag = f1.delete();
            if (flag) {
                System.out.println("删除成功");
            }else {
                System.out.println("删除失败");
            }
        }else {

            // 创建文件夹  必须保证路径上每一个文件夹都存在
            boolean flag = f1.mkdir();

            if (flag) {
                System.out.println("创建成功");
            }else {

                System.out.println("创建失败");
            }
        }

        // DOS命令:mkdir  make directory 创建文件 

        // mkdir() 必须保证路径上的父文件夹都存在
        System.out.println("创建是否成功:" + f1.mkdir());

        // mkdirs() 创建路径上所有不存在的文件夹
        System.out.println("创建是否成功:" + f1.mkdirs());
    }
}

import java.io.File;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;

public class FileTest4 {

    public static void main(String[] args) {

        File f1 = new File("D:/JavaTest/1.txt");

        System.out.println("是不是文件:" + f1.isFile());
        System.out.println("是不是文件夹:" + f1.isDirectory());

        System.out.println("可读:" + f1.canRead() );
        System.out.println("可写:" + f1.canWrite() );
        System.out.println("是否是隐藏文件" + f1.isHidden());

        System.out.println("大小:" + f1.length()); // 字节

        // 时间戳 : 从19701100:00:00到指定时间经过了多少毫秒
        System.out.println("最后修改时间:" + f1.lastModified());

        // 时间戳转化为对应的日期 1  
        LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(System.currentTimeMillis()/1000, 0,ZoneOffset.ofHours(8));
        System.out.println(localDateTime);

        // 时间戳转化为对应的日期  2
        Date date = new Date(f1.lastModified());
        System.out.println(date);

        File f2 = new File("D:/JavaTest");
        // 不包含文件夹中的文件大小  
        System.out.println("文件夹大小:" + f2.length());

    }
}

使用File类的方法,可以写一个遍历文件夹的方法
使用的递归的方法.

import java.io.File;

public class FileTest5 {

    public static void main(String[] args) {

        File f1 = new File("D:/");

        String[] names = f1.list();

        for (String name : names) {
            // System.out.println(name);
        }

        // 当前文件夹下所有的文件对象
        File[] files = f1.listFiles();

        // 遍历所有对象
        for (File file : files) {

            // System.out.println(file.getName());
        }

        int x = getDirectoryLength(f1);
        System.out.println(x);

    }

    public static int getDirectoryLength(File file){

        int result = 0;

        // 大小 = 所有文件的大小 + 所有文件夹的大小

        // 1.获取所有的文件
        File[] files = file.listFiles();

        // 2.遍历进行累加
        for (File file2 : files) {
            if (file2.isFile()) {

                // 普通文件通过length()  获取长度进行类加
                result += file2.length();
                System.out.println(file2.getName());


            }else if(file2.isDirectory()) {

                // 文件夹通过自己的方法再获取长度
                result += getDirectoryLength(file2);

                // 方法内部调用自己的方式叫做递归
                // 一定存在终止的条件,否则就会产生死循环
                // 一定会有一个文件夹没有子文件夹
            }
        }

        return result;  
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值