【Java基础概述-9】File文件类概述、字符集简要概述

本文详细介绍了Java中File类的基本操作,如创建文件对象(绝对路径和相对路径)、判断文件/目录存在性、创建和删除文件/目录、目录遍历,以及字符集和编码问题,重点强调了UTF-8编码在处理多语言字符时的适用性。
摘要由CSDN通过智能技术生成

1、File类的概述

        File类:代表了当前操作系统的文件对象。

        File类用来操作操作系统的文件对象的,删除文件、获取文件信息,创建文件或者文件夹...

        广义上来说操作系统认为文件包括文件和文件夹

        


        File类的创建文件对象的API:

        包:Java.io.FIle

        

        构造器:

        --public File(String pathName):根据路径获取文件对象。

        --public File(String parent,String child):根据父路径和文件名称获取文件对象。

        --public File(File parent,String child):根据父路径文件对象获取文件夹中的文件。

        File类创建文件对象的格式:

        a、File f = new File("绝对路径/相对路径");

        绝对路径:从磁盘的盘符开始一路走的路径。

        很依赖环境,一旦脱离,直接崩溃

        相对路径: 

        --默认是直接相对到工程 目录下寻找文件的。

        --相对路径只能用于寻找工程文件。

        --能用相对路径就尽量使用相对路径,可以跨平台!!

        b.File f = new File("文件对象/文件夹对象");

        小结:

        创建文件对象可以用绝对路径也可以用相对路径。

        相对路径用于寻找工程下的文件。

        文件对象可以表示文件,也可以表示文件夹

        

public class FileDemo {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\javac\\Pictures\\Screenshots\\屏幕截图 2024-01-06 163750.png");
        System.out.println(file.length()/1024+"KB");//字节大小,1字节=8bit,1k=1024字节

        //2.创建文件对象,使用相对路径,从项目下开始
        File file1 = new File("Day09Demo/src/test.txt");
        System.out.println(file1.length()+"B");

        //3.根据父文件对象,创建文件
        File filePath = new File("Day09Demo/src");
        File file2 = new File(filePath, "test4.txt");
        System.out.println(file2.length());
    }
}

1.1、File类的判断功能的方法

        --public boolean exists():此File表示的文件或者目录是否实际存在;

、    --public boolean isDirectory() :此File表示的是否是文件夹。

        --public boolean isFile():此File表示的是否是文件.

        例子:

public class FileDemo {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\javac\\Pictures\\Screenshots\\屏幕截图 2024-01-06 163750.png");
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        File file1 = new File("C:\\Users");
        System.out.println(file1.exists());
        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());
    }
}

 

1.2、File类的创建和删除的方法

        --public boolean createNewFile():当且仅当具有该名称的文件尚不存在的时候,创建一个新的文件。

        --public boolean delete():删除由此File表示的目录。

        --public boolean mkdir():创建由此File表示的单级目录。

        --public boolean mkdirs():可以创建多级目录。

public class FIleDemo {
    public static void main(String[] args) throws IOException {
//        File file =new File("Day09Demo/src/test01.txt");
        //a.创建新文件,创建成功返回true,反之

//        System.out.println(file.createNewFile());
        //b.删除文件或者空文件夹。
//        System.out.println(file.delete());
//        File file = new File("D:\\test");
        //c.创建一级文件夹
//        System.out.println(file.mkdir());
        File file = new File("D:\\test\\a\\a\\b");
        //d.创建多级目录
        System.out.println(file.mkdirs());


    }
}

 1.3、File目录的遍历:

        --public String[] list();

        获取当前目录下的所有"一级文件名称"到一个字符串数组去返回。

        --public File[] listFiles();

        获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回。

        

public class FileDemo {
    public static void main(String[] args) {
        File file = new File("E:\\");

        //获取当前目录对象下的全部一级文件名称到一个字符串数组返回。
        String[] list = file.list();
        for (String s : list) {
            System.out.println(s);
        }
        //获取当前目录对象下的全部一级文件对象到一个File类型的数组返回。
        File[] files = file.listFiles();
        for (File file1 : files) {
            System.out.println(file1.getAbsoluteFile());
        }

        //扩展
        File filez = new File("C:\\Users\\javac\\Pictures\\Screenshots\\屏幕截图 2024-01-06 163750.png");
        long l = filez.lastModified();//最后修改时间
        SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy/MM/dd");
        String format = simpleDateFormat.format(l);
        System.out.println(format);

    }
}

1.4、案例:递归实现文件搜索 

        

public class FileSearchDemo {
    public static void main(String[] args) {
//        System.out.println(sum(10));
        File file = new File("E:\\Document");
        File file1 = searchFile(file, "tsconfig.json");
        System.out.println(file1.getAbsoluteFile());

    }


    //非规律化递归搜索一个文件夹下的文件
    public static File searchFile(File path,String file){
        if (path.isDirectory() && path.exists()){//先判断是否是文件夹
            File[] files = path.listFiles();//找到所有文件对象
            if (files!=null && files.length>0){//如果当前文件夹不为空
                for (File f : files) {
                    if (f.isFile()){
                        if(f.getName().contains(file)){
                            return f;
                        }
                    }else{
                        File result = searchFile(f, file);
                        if (result != null) {
                            return result;  // 如果找到文件,立即返回结果
                        }

                    }

                }
            }
        }
        return null;
    }




}

2、字符集概述

        字符集:各个国家为自己国家字符取了一些编号编码。

        计算机的底层是不能直接存储的。

        计算机的底层只能存储二进制。010101

        二进制就是可以转成10进制,10进制就是整数编号。

        美国人:

        8个开关就可以编码字符,1字节足以,

        这里因为1字节=8bit.

        也就是00000000-11111111

        这里有256中编码。2^8

        a 97

        b 98

        ...

        A 65

        B 66

        ....

        0 48

        1 49

        组成ASCLL编码

        所以英文字符就一个字符占1B

        256足以表示英文和数字等符号。

        中国人:

        中国文字,有很多字符,9万左右的字符。65536=2^16

        中国人采用2个字节编码一个中文字符

        这套编码叫GBK编码。

        他必须兼容ASCLL码

        美国人:

        这样吧,我来收集全球所有字符,统一编码,这套编码叫做unicode(万国码)

        UTF-8就是变种形式

        UTF-8中文一般占3字节

        技术人员首选UTF-8编码

所以,在进行编码时候,有时候出现乱码问题其实就是编码没有弄对的问题,把GBK文件编码的形式采用UTF-8解析就会乱码。


             

        

        

 

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力奋斗的张同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值