File 类

File类

主要用途

操作电脑中的文件和文件夹,File类是文件和目录路径(文件夹)的抽象表示。也就是说电脑中的文件和文件夹可以封装成File类,可以通过File类对其进行操作。

字段

就是代表当前系统的路径分隔符和文件分隔符

类型字段描述
static StringpathSeparator与系统相关的路径分隔符,字符串形式
static charpathSeparatorChar与系统相关的路径分隔符
static Stringseparator与系统相关的文件名称分隔符,字符串形式
static charseparatorChar与系统相关的文件名称分隔符
public class Demo {
    public static void main(String[] args) {
        //系统相关的路径分隔符
        char pathSeparatorChar = File.pathSeparatorChar;
        System.out.println("pathSeparatorChar:  "+pathSeparatorChar);
        String pathSeparator = File.pathSeparator;
        System.out.println("pathSeparator:  "+pathSeparator);
        //系统相关的名称分隔符
        char separatorChar = File.separatorChar;
        System.out.println("separatorChar:  "+separatorChar);
        String separator = File.separator;
        System.out.println("separator:  "+separator);
    }
}
---*---
输出结果:
pathSeparatorChar:  ;
pathSeparator:  ;
separatorChar:  \
separator:  \

注意:由于不同系统的分隔符是不同的,所以程序不能把分隔符写死。当需要传入路径的时候,使用(File.separator)获取当前系统的分隔符来代替。👇

public class Demo {
    public static void main(String[] args) {
        String spr = File.separator;
        File f = new File("d:"+spr+"测试"+spr+"c1");
        System.out.println(f);
    }
}
---*---
输出结果:
d:\测试\c1
系统路径分隔符文件名称分隔符
Windows;\
Linx:/

路径

  • 概述:
    在计算机中路径代表一个文件或文件夹所在的具体位置。一条真实的路径会指向一个文件夹或文件。
  • 举例:
    有一个1.txt文件存放在 D盘 下的 小说 文件夹中,那这个文件的路径就是D:\小说\1.txt 。小说文件夹的路径是 D:\小说
  • 绝对/相对路径:
    绝对路径:以盘符开始的路径(完整的)
    范例:C:\KuGou
    相对路径:不以盘符开始的路径(不完整,以当前文件或者项目根目录,作为参考的路径)
    范例:(当前项目所在路径)\tamp\test.txt
  • 提示:
    1.路径不区分大小写
    2.在Java程序中,反斜杠表示转义字符,所以我们使用两个反斜杠代表一个反斜杠。\\

常用方法

构造方法

构造方法描述
File (String pathname)通过一个路径字符串创建一个File对象
File (String parent,String child)把路径分成两部分,通过起始路径和子路径创建File对象
File (File parent,String child)把路径分成两部分,通过抽象起始路径和子路径创建File对象
public class TestFile {
    public static void main(String[] args) {
        //File (String pathname) 构造方法1
        File f1 = new File("e:\\360sd");
        System.out.println(f1);
        //File (String parent,String child) 构造方法2
        File f2 = new File("e:\\","360sd");
        System.out.println(f2);
        //File (File parent,String child) 构造方法3
        File parent = new File("e:\\");
        File f4 = new File(parent,"360xd");
        System.out.println(f4);
    }
}
---*---
输出结果:
e:\360sd
e:\360sd
e:\360xd

输出结果可以看出,上面3中构造方法都创建了路径为 e:\360sd 的对象。也可以说创建File对象就是封装了一个抽象的路径:

  1. 路径可以是以文件结尾,也可以是文件夹结尾
  2. 路径可以是相对路径,也可以是绝对路径
  3. 路径可以是存在的,也可以是不存在的

创建 / 删除的方法

方法名描述
boolean createNewFile()当且仅当具有此名称的文件尚不存在时,创建由此抽象路径名命名的新空文件
boolean mkdir()创建File对象表示的目录(创建单级文件夹)
boolean mkdirs()创建File对象表示的目录,包括必须但不存在的父目录(创建单级/多级文件夹)
boolean delete()删除File对象表示的目录
  • 创建文件夹

    public class Demo {
        public static void main(String[] args) {
            File f1 = new File("e:\\360sd\\小说");
            boolean bl = f1.mkdirs();
            System.out.println(bl);
        }
    }
    ---*---
    输出结果:
    true//并且创建了 小说 文件夹的路径:e:\\360sd\\小说
    

    创建文件夹有个方法 mkdir 和 mkdirs 一般使用后者可以创建多级文件夹。创建文件夹可能会出现 2 种情况:

    1. false:File对象封装路径盘符不存在,该文件夹已经存在
    2. true:File对象封装路径盘符存在且该路径没有被同名文件夹占用
  • 创建文件

    public class Demo {
        public static void main(String[] args) throws IOException {
            File f1 = new File("e:\\360sd\\1.txt");
            boolean bl = f1.createNewFile();
            System.out.println(bl);
        }
    }
    ---*---
    输出结果:
    true //创建了该File对象封装的路径指向的文件:e:\\360sd\\1.txt
    

    创建文件会抛出IO异常,这里通过方法throws处理。如果File对象封装的路径指向的不是文件,那么创建出来的文件是没有后缀的(未知文件类型)。创建文件可能会出现 3 种情况:

    1. IOException:File对象封装的路径不存在(创建文件需要一条真实且存在的路径)
    2. false:File对象封装的路径所指向的文件已经存在
    3. true:File对象封装的路径存在且路径所指向的文件不存在
  • 删除文件/文件夹

    public class Demo {
        public static void main(String[] args) throws IOException, InterruptedException {
            //创建/删除 文件
            File f1 = new File("e:\\360sd\\1.txt");
            boolean bl1 = f1.createNewFile();
            System.out.println("文件创建:"+bl1);
            Thread.sleep(3000);//让程序休眠3秒
            boolean bl2 = f1.delete();
            System.out.println("文件删除:"+bl2);
            
            //创建/删除 文件夹
            File f2 = new File("e:\\360sd\\小说文件夹");
            boolean bl3 = f2.mkdirs();
            System.out.println("文件夹创建:"+bl3);
            Thread.sleep(3000);//让程序休眠3秒
            boolean bl4 = f2.delete();
            System.out.println("文件夹删除:"+bl4);
        }
    }
    ---*---
    输出结果:
    文件创建:true
    文件删除:true
    文件夹创建:true
    文件夹删除:true
    

    delete 方法将删除File对象封装路径所指向的文件或文件夹,并且不走回收站。使用 delete 方法可能会出现 2 种情况:

    1. false:路径所指向的文件夹或文件不存在(删除的文件夹中有内容)
    2. true:路径所指向的文件夹或文件存在(删除的文件夹中没有内容)
  • 获取功能

    方法名描述
    String getAbsolutePath()返回此File对象封装的绝对路径
    String getPath()返回File对象封装的路径
    String getName()返回File对象抽象路径所指向的文件夹或文件
    Long length()获取File对象所指文件大小(以字节显示)
    public class TestFile {
        public static void main(String[] args) {
            File f1 = new File("360sd\\123");
            System.out.println("getAbs : "+f1.getAbsolutePath());
            System.out.println("getPath: "+f1.getPath());
            System.out.println("getName: "+f1.getName());
    
            File f2 = new File("e:\\360sd\\auto.apk");
            System.out.println("length : "+f2.length());
        }
    }
    ---*---
    输出结果:
    getAbs : D:\java_project\Java_SE_Code\360sd\123
    getPath: 360sd\123
    getName: 123
    length : 10869283 
    
  • 判断功能

    方法名描述
    boolean exists()判断此File对象封装的路径所指向的文件或文件夹是否真实存在
    boolean isDirectory判断File对象封装的路径所指向的是否为文件夹
    boolean isFile判断File对象封装的路径所指向的是否是文件
    public class TestFile {
        public static void main(String[] args) {
            File f1 = new File("e:\\360sd\\auto.apk");
            System.out.println("exists     : "+f1.exists());
            System.out.println("isDirectory: "+f1.isDirectory());
            System.out.println("isFile     : "+f1.isFile());
        }
    }
    ---*---
    输出结果:
    exists     : true
    isDirectory: false
    isFile     : true
    

    注意:判断路径指向是文件夹还是文件的前提是,这条路径必须真实存在否则均返回 false。

  • 遍历功能

    方法名描述
    String[ ] list()返回一个String数组,表示该File对象封装路径所指向文件夹中所有的文件和子文件夹
    File[ ] listFiles()返回一个File数组,表示该File对象封装路径所指向文件夹中所有的文件和子文件夹
    public class Demo {
        public static void main(String[] args) {
            File f = new File("e:\\360sd");
            if (f.exists()){//判断路径是否真实
                if (f.isDirectory()){//判断路径指向是否是文件夹
                    File[] files = f.listFiles();
                    for (File file : files) {
                        File ff = file;
                        System.out.println(ff);
                    }
                }else {
                    System.out.println("路径不是文件夹");
                }
            }else {
                System.out.println("路径不存在!");
            }
        }
    }
    ---*---
    输出结果:
    e:\360sd\1.txt
    e:\360sd\临时文件夹
    e:\360sd\图片.jpg
    e:\360sd\新建文件夹
    e:\360sd\新建文件夹 (2)
    e:\360sd\新建文件夹 (3)
    

    注意:使用 list 和 listFiles 方法的前提必须是该File对象封装路径真实存在且路径指向文件夹而不是文件,否则返回null。

  • 遍历某文件夹中所有的文件

    public class Demo {
        public static void main(String[] args) {
            File f = new File("e:\\360sd");
            show(f);
        }
    	//遍历方法
        public static void show(File f)  {
            if (f.exists()){//判断路径是否真实
                if (f.isDirectory()){//判断路径指向是否是文件夹
                    File[] files = f.listFiles();
                    if (files!=null) {
                        for (File file : files) {
                            show(file);
                        }
                    }
                }else {
                    System.out.println(f.getAbsoluteFile());
                }
            }else {
                System.out.println("路径不存在!");
            }
        }
    }
    ---*---
    输出结果:
    1-e:\360sd\1.txt
    2-e:\360sd\图片.jpg
    3-e:\360sd\新建文件夹 (2)\小说\土豆.txt
    4-e:\360sd\新建文件夹 (2)\小说\豆皮.txt
    

File帮助文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值