Java的File类

一.File类

1.对象的创建

package org.starQeem;

import java.io.File;

/**
 * @Date: ${DATE} ${TIME}
 * @author: Qeem
 */
public class FileTest1 {
    public static void main(String[] args) {
        //1.创建一个File对象,指代某个具体的文件
//        File f1 = new File("D:/FileDemo/ab.txt");
        File f1 = new File("D:\\FileDemo\\ab.txt");
        System.out.println(f1.getName());//获取文件名
        System.out.println(f1.length());//获取文件大小
        //2.创建一个File对象,代指某个目录
        File f2 = new File("D:\\FileDemo\\ml");
        System.out.println(f2.length());//获取目录大小(注意:是获取目录本身的大小而不是目录里所有文件的大小)
        //3.注意:File对象可以指向一个不存在的文件路径
        File f3 = new File("D:\\FileDemo\\abc");
        System.out.println(f3.length());//不存在的话大小会是0
        System.out.println(f3.exists());//判断该文件存不存在,存在返回true,不存在返回false
        //4.我现在要定位的文件是在模块中,应该怎么定位呢?
        //绝对路径:带盘符的,上面的都是
        //也可以用相对路径(重点):不带盘符的,默认是直接去工程下寻找文件
        File f4 = new File("src\\Qeem.txt");
        System.out.println(f4.length());
    }
}

2.File类:判断、判断信息相关的方法

package org.starQeem;

import java.io.File;
import java.text.SimpleDateFormat;

public class FileTest2 {
    public static void main(String[] args) {
        //1.创建文件对象,指代某个文件
        File f1 = new File("D:\\FileDemo\\ab.txt");
        //2.public boolean exists():判断当前文件对象,对应的文件路径是否存在,存在返回true,不存在返回false
        System.out.println(f1.exists());
        //3.public boolean isFile():判断当前文件对象指代的是否是文件
        System.out.println(f1.isFile());
        //4.public boolean isDirectory():判断当前文件对象指代的是否是文件夹
        System.out.println(f1.isDirectory());
        //5.public String getName():获取文件的名称(包含后缀)
        System.out.println(f1.getName());
        //6.public long length():获取文件的大小,返回字节个数
        System.out.println(f1.length());
        //7.public long lastModified():获取文件的最后修改时间
        System.out.println(f1.lastModified());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        System.out.println(sdf);
        //8.public String getPath():获取创建文件对象时,使用的路径
        File f2 = new File("D:\\FileDemo\\ml");
        File f3 = new File("src\\Qeem.txt");
        System.out.println(f2.getPath());
        System.out.println(f3.getPath());
        //9.public String getAbsolutePath():获取绝对路径
        System.out.println(f2.getAbsolutePath());
        System.out.println(f3.getAbsolutePath());
    }
}

3.File类:创建、删除文件的方法

package org.starQeem;


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

public class FileTest3 {
    public static void main(String[] args) throws IOException {
        //1.public boolean createNewFile(): 创建一个新文件(文件内容为空):创建成功返回true,反之,返回false
        File f1 = new File("D:\\FileDemo\\star.txt");
        System.out.println(f1.createNewFile());
        //2.public boolean mkdir():用于创建文件夹,注意:只能创建一级文件夹
        File f2 = new File("D:\\FileDemo\\aaa\\bbb");
        System.out.println(f2.mkdir());//三级文件夹,不行
        File f3 = new File("D:\\aaa");
        System.out.println(f3.mkdir());//一级文件夹,非常的行
        //3.public boolean mkdirs():用于创建文件夹,注意:可以创建多级文件夹
        File f4 = new File("D:\\FileDemo\\aaa\\bbb\\ccc");
        System.out.println(f4.mkdirs());
        //4.public boolean delete():删除文件,或者空文件注意:不能删除非空文件夹
        System.out.println(f4.delete());
    }
}

二.方法递归

1.方法递归的算法执行流程

代码

package org.starQeem.d2_recursion;

/*
* 目标:掌握递归的应用,执行流程和算法思想
* */
public class RecursionTest1 {
    public static void main(String[] args) {
        System.out.println("5的阶乘是:" + f(5));
        System.out.println("1~100的和是:" + add(100));
    }
    public static int add(int n){
        if (n == 1){
            return n;
        }else {
            return n += add(n - 1);
        }
    }
    public static int f(int n){
        //终结点
        if (n == 1){
            return 1;
        }else {
            return f(n - 1) * n;
        }
    }

}

运行结果

执行流程

2.文件搜索

package org.starQeem.d2_recursion;

import java.io.File;

/*
* 目标:掌握文件搜索的实现
* */
public class RecursionTest2 {
    public static void main(String[] args) {
        File file = new File("D:\\FileDemo");
        searchFile(file,"ab.txt");
    }

    /**
     * 去目录下搜索某个文件(不包括文件夹)
     *
     * @param dir      目录
     * @param fileName  要搜索的文件名称
     */
    public static void searchFile(File dir,String fileName){
        //1.把非法情况都拦截住
        if (dir == null || !dir.exists() || dir.isFile()){
            return; //代表无法搜索
        }
        //2.dir不是null,存在,一定是对象目录
        //获取当前目录下的全部一级目录文件
        File[] files = dir.listFiles();
        //3.判断当前目录下是否存在一级文件对象,以及是否可以拿到一级文件对象
        if (files != null && files.length > 0){
            //4.遍历全部一级对象
            for (File f : files) {
                //5.判断文件是否是文件,还是文件夹
                if (f.isFile()){
                    //是文件,判断这个文件名是否是我们要找的
                    if (f.getName().contains(fileName)){ //路径上有没有包含文件名
                        System.out.println("找到了:" + f.getAbsolutePath());
                    }else {
                        //是文件夹,继续重复这个过程(递归)
                        searchFile(f,fileName);
                    }
                }
            }
        }
    }

}

三.字符集

Java代码完成编码、解码

package org.starQeem.d3_charset;

import java.util.Arrays;

public class Test {
    public static void main(String[] args) throws Exception {
        /*
        * 编码和解码的方式不一样会导致乱码
        * */
        //1.编码
        String data = "a我b";
        byte[] bytes = data.getBytes();  //默认是按照平台字符集(UTF-8)进行编码的
        System.out.println(Arrays.toString(bytes));
        //按照指定字符集进行编码
        byte[] bytes1 = data.getBytes("GBK");  //指定GBK进行编码
        System.out.println(Arrays.toString(bytes1));
        //2.解码
        String s1 = new String(bytes);  //按照平台默认编码(UTF-8解码)
        System.out.println(s1);
        String s2 = new String(bytes1);  //GBK编码的(现在用UTF-8解码[平台默认])
        System.out.println(s2); //乱码
        String s3 = new String(bytes1, "GBK"); //指定GBK进行解码
        System.out.println(s3); //ok
    }
}

end
Java

评论区

暂无评论