File类概述

File类概述

Java.io.File类
文件和目录路径名的抽象表示形式
java把电脑中的文件和文件夹(目录)封装成了一个File类,我们可以使用File类对文件和文件夹进行操作
我们可以使用File类的方法
*创建一个文件/文件夹
*删除创建一个文件/文件夹
*获取一个文件/文件夹
*判断一个文件/文件夹
*对文件夹进行遍历
*获取文件的大小
*File类是一个与系统无关的类,任何操作系统都可以使用这个类中的方法

1.分隔符

public class Demo01File {
    public static void main(String[] args) {
        String pathSeparator = File.pathSeparator;//路径分割符
        System.out.println(pathSeparator);
        String separator = File.separator;//文件名分隔符
        System.out.println(separator);
    }
}

因为不同系统的分隔符不同,所以路径不能写死了,如:
C:\develop\a.txt windows
C:/develop/a.txt Linux
要写成 “C:”+File.separator+“develop”+File.separator+“a.txt”

File类构造方法

File(String pathname):通过将给定路径名称的字符转换为抽象路径名称来创建一个File实例
参数:
String pathname:字符串的路径名称
路径可以是文件结尾,也可以是文件夹结尾
路径可以是相对路径,也可以是绝对路径
路径可以是存在的,也可以是不存在的
创建File对象,只是把子封装为File对象不考虑路径的真假情况

private static void show01() {
        File f1=new File("F:\\IdeaProjects\\baisc-codeII\\a.txt");
        System.out.println(f1);//重写了object类中的toString方法
        File f2=new File("F:\\IdeaProjects\\baisc-codeII");
        System.out.println(f2);

        File f3=new File("b.txt");
        System.out.println(f3);
        }

File(String parent,String child) :根据parent路径名字符串和child路径名字符串创建一个新File实例
参数:把路径分成了两部分父路径和子路径,自动填上分隔符
好处:父路径和子路径可以单独书写,而且父路径和子路径可以变化

private static void show02(String parent,String child) {
        File file=new File(parent,child);
        System.out.println(file);
        }
        show02("c:","a.txt");//c:\a.txt
        show02("d:","a.txt");//d:\a.txt

File(File parent,String child)
注意数据类型变了
好处:
1.父路径和子路径可以单独书写,而且父路径和子路径可以变化
2.父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象

	private static void show03() {
        File parent=new File("c:\\");
        File file=new File(parent,"Hello.java");
        System.out.println(file);//c:\Hello.java
        }

3.几个获取方法

show01();//getAbsolutePath()
show02();//getPath()
show03();//getName()
show04();//length()

 private static void show04() {//getLength()返回文件大小,字节为单位,如果文件不存在,返回0
        File f1=new File("G:\\自学java\\java笔记");
        System.out.println(f1.length());//12680

        File f2=new File("G:\\作业");
        System.out.println(f2.length());//文件夹,返回0
    }

    private static void show03() {
        File f1 = new File("F:\\IdeaProjects\\baisc-codeII\\a.txt");
        System.out.println(f1.getName());//a.txt
        File f2 = new File("F:\\IdeaProjects\\baisc-codeII");
        System.out.println(f2.getName());//baisc-codeII
    }

    private static void show02() {//路径是什么,就返回什么
        File f1 = new File("F:\\IdeaProjects\\baisc-codeII");
        System.out.println(f1.getPath());
        File f2 = new File("a.txt");
        System.out.println(f2.getPath());

        System.out.println(f2.toString());//实际上重写toString就是调用了getPath方法
    }

    private static void show01() {//获取构造方法中传递的路径,返回绝对路径
        File f1 = new File("F:\\IdeaProjects\\baisc-codeII");
        System.out.println(f1.getAbsolutePath());
        File f2 = new File("a.txt");
        System.out.println(f2.getAbsolutePath());
    }
}

4.几个判断方法

isDirectory()判断是否是目录 exists()判断路径是否存在 isFile()判断是否是文件

private static void show02() {
    File f1 = new File("F:\\IdeaProjects\\baisc-codeII");
    System.out.println(f1.exists());//true
    System.out.println(f1.isDirectory());//true
    System.out.println(f1.isFile());//false

    File f2 = new File("F:\\IdeaProjects\\baisc-codeII\\.idea\\misc.xml");
    System.out.println(f2.exists());//true
    System.out.println(f2.isDirectory());//false
    System.out.println(f2.isFile());//true

    File f3 = new File("F:\\IdeaProjects\\baisc-codeII\\.idea\\nkasng");
    System.out.println(f3.exists());//false
    System.out.println(f3.isDirectory());//false
    System.out.println(f3.isFile());//false
}

5.创建与删除文件或目录

createNewFile();
true:文件夹不存在,创建文件夹,返回true
false:文件夹存在,返回false
路径错误:抛出异常

private static void show01() {
    File f1 = new File("F:\\IdeaProjects\\baisc-codeII\\1.txt");//相对绝对都行
    boolean b1 = false;
    try {
        b1 = f1.createNewFile();
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println(b1);

}

mkdir()创建单级文件夹,mkdirs()既可以单级,也可以多级
true:文件夹不存在,创建文件夹,返回true
false:文件夹存在,路径错误,返回false

private static void show02() {
    File f1 = new File("F:\\IdeaProjects\\baisc-codeII\\文件夹");
    System.out.println(f1.mkdir());

    File f2 = new File("F:\\IdeaProjects\\baisc-codeII\\文件夹1\\文件夹11\\文件夹111");
    System.out.println(f2.mkdirs());//这种多级的要用mkdirs
}

delete()删除文件或文件夹
true:删除成功
false:文件夹中有内容,不会删除返回false;路径错误,返回false
delete()直接在硬盘删除,不走回收站

private static void show03() {
    File f1 = new File("F:\\IdeaProjects\\baisc-codeII\\文件夹1");
    System.out.println(f1.delete());
    File f2 = new File("F:\\IdeaProjects\\baisc-codeII\\文件夹1\\文件夹11");
    System.out.println(f2.delete());
    File f3 = new File("F:\\IdeaProjects\\baisc-codeII\\文件夹1\\文件夹11\\文件夹111");
    System.out.println(f3.delete());
    System.out.println("----");
}

执行

public static void main(String[] args) {
    show01();//createNewFile();返回真(创建成功)假(已存在),没法创建文件夹
    show02();//创建文件夹:mkdir()创建单级文件夹,mkdirs()既可以单级,也可以多级
    System.out.println("------------222---------");
    for (int i = 0; i < 3; i++) {
        show03();//delete()
    }

}
输出结果
true
true
true
------------222---------
false
false
true
----
false
true
false
----
true
false
false
----

6.遍历目录

list()返回一个String数组,表示该目录中所有文件或目录
隐藏的也能遍历出来
如果遍历的是文件,或路径错误,就会报空指针异常

private static void show01() {
    File file = new File("F:\\IdeaProjects\\baisc-codeII");
    String[] list = file.list();//返回一个String数组,表示该目录中所有文件或目录
    for(String s:list){
        System.out.println(s);
    }
}
结果:
.idea
1.txt
day01-code
day02-code
day03-code
day04-code
day05-code
day06-code
day08-code
out
文件夹

listFiles()返回的是File类型的数组

private static void show02() {
    File file = new File("F:\\IdeaProjects\\baisc-codeII");
    File[] files = file.listFiles();//返回的是File类型的数组
    for (File f:files){
        System.out.println(f);
    }
    结果:
    F:\IdeaProjects\baisc-codeII\.idea
F:\IdeaProjects\baisc-codeII\1.txt
F:\IdeaProjects\baisc-codeII\day01-code
F:\IdeaProjects\baisc-codeII\day02-code
F:\IdeaProjects\baisc-codeII\day03-code
F:\IdeaProjects\baisc-codeII\day04-code
F:\IdeaProjects\baisc-codeII\day05-code
F:\IdeaProjects\baisc-codeII\day06-code
F:\IdeaProjects\baisc-codeII\day08-code
F:\IdeaProjects\baisc-codeII\out
F:\IdeaProjects\baisc-codeII\文件夹

小总结

我是从元旦开始看这个培训班视频的,到今天一共45天,看了培训班19天(前350节)讲的内容,刨除过年期间耽误的时间,效率也是比较低。JavaSE课程还有流、网络编程、常用的函数式接口这几部分没有看,我准备暂时跳过这几节课,直接开始看JavaWeb(458节开始)的课程。计划未来三天看完相关数据库方面的课程(476-568)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值