Java_27_File类

File类

  1. File类:代表操作系统的文件对象。

  2. File类:是用来操作操作系统的文件对象的,删除文件,获取文件信息,创建文件(文件夹)…

  3. 广义来说操作系统认为文件包含(文件和文件夹)

  4. File类的创建文件对象的API:
    包:java.io.File

    1. 构造器:
      – public File(String pathname):根据路径获取文件对象
      – public File(String parent , String child):根据父路径和文件名称获取文件对象!
      – public File(File parent , String child)

    2. File类创建文件对象的格式:
      a.File f = new File(“绝对路径/相对路径”);

      1. 绝对路径:从磁盘的的盘符一路走到目的位置的路径。
        – 绝对路径依赖具体的环境,一旦脱离环境,代码可能出错!!
        – 一般是定位某个操作系统中的某个文件对象。
      2. 相对路径:不带盘符的。(重点)
        – 默认是直接相对到工程目录下寻找文件的。
        – 相对路径只能用于寻找工程下的文件。
        – 能用相对路径就应该尽量使用,可以跨平台!

      b.File f = new File(“文件对象/文件夹对象”);
      广义来说:文件是包含文件和文件夹的。

  5. 小结:
    创建文件对象可以用绝对路径也可以用相对路径。
    相对路径只能用于寻找工程下的文件。
    文件对象可以表示文件也可以表示文件夹!

public class FileDemo01 {
    public static void main(String[] args) {
        // 1.创建文件对象:使用绝对路径
        // 文件路径分隔符:
        //      -- a.使用正斜杠: /
        //      -- b.使用反斜杠: \\
        //      -- c.使用分隔符API:File.separator
        //File f1 = new File("D:/itcast/图片资源/beautiful.jpg");
        //File f1 = new File("D:"+File.separator+"itcast"+File.separator+"图片资源"+File.separator+"beautiful.jpg");
        File f1 = new File("D:\\itcast\\图片资源\\beautiful.jpg");
        System.out.println(f1.length()); // 获取文件的大小,字节大小

        // 2.创建文件对象:使用相对路径
        File f2 = new File("Day09Demo/src/dlei01.txt");
        System.out.println(f2.length());

        // 3.创建文件对象:代表文件夹。
        File f3 = new File("D:\\itcast\\图片资源");
        System.out.println(f3.exists());// 判断路径是否存在!!
        System.out.println(f3.length());//只是拿到了文件夹本身的大小
    }
}

File类的获取功能

  • public String getAbsolutePath() :返回此File的绝对路径名字符串。
  • public String getPath() : 获取创建文件对象的时候用的路径
  • public String getName() : 返回由此File表示的文件或目录的名称。
  • public long length() : 返回由此File表示的文件的长度。
public class FileDemo {
    public static void main(String[] args) {
        // 1.绝对路径创建一个文件对象
        File f1 = new File("D:/itcast/图片资源/meinv.jpg");
        // a.获取它的绝对路径。
        System.out.println(f1.getAbsolutePath());
        // b.获取文件定义的时候使用的路径。
        System.out.println(f1.getPath());
        // c.获取文件的名称:带后缀。
        System.out.println(f1.getName());
        // d.获取文件的大小:字节个数。
        System.out.println(f1.length());

        System.out.println("------------------------");

        // 2.相对路径
        File f2 = new File("Day09Demo/src/dlei01.txt");
        // a.获取它的绝对路径。
        System.out.println(f2.getAbsolutePath());
        // b.获取文件定义的时候使用的路径。
        System.out.println(f2.getPath());
        // c.获取文件的名称:带后缀。
        System.out.println(f2.getName());
        // d.获取文件的大小:字节个数。
        System.out.println(f2.length());
    }
}

判断功能方法

public class FileDemo {
    public static void main(String[] args) {
        // 1.文件对象。
        File f1 = new File("D:\\itcast\\图片资源\\meinv.jpg");
        // a.判断文件路径是否存在
        System.out.println(f1.exists()); // true
        // b.判断文件对象是否是文件,是文件返回true ,反之
        System.out.println(f1.isFile()); // true
        // c.判断文件对象是否是文件夹,是文件夹返回true ,反之
        System.out.println(f1.isDirectory()); // false

        // 1.文件对象。
        File f2 = new File("D:\\itcast\\图片资源");
        // a.判断文件路径是否存在
        System.out.println(f2.exists()); // true
        // b.判断文件对象是否是文件,是文件返回true ,反之
        System.out.println(f2.isFile()); // false
        // c.判断文件对象是否是文件夹,是文件夹返回true ,反之
        System.out.println(f2.isDirectory()); // true
    }
}

创建和删除方法

public class FileDemo {
    public static void main(String[] args) throws IOException {
        File f = new File("Day09Demo/src/dlei02.txt");
        // a.创建新文件,创建成功返回true ,反之
        System.out.println(f.createNewFile());

        // b.删除文件或者空文件夹
        System.out.println(f.delete());
        // 不能删除非空文件夹,只能删除空文件夹
        File f1 = new File("D:/itcast/aaaaa");
        System.out.println(f1.delete());

        // c.创建一级目录
        File f2 = new File("D:/itcast/bbbb");
        System.out.println(f2.mkdir());

        // d.创建多级目录
        File f3 = new File("D:/itcast/e/a/d/ds/fas/fas/fas/fas/fas/fas");
        System.out.println(f3.mkdirs());
    }
}

目录的遍历

  • public String[] list():
    获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
  • public File[] listFiles()(常用):
    获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)
public class FileDemo {
    public static void main(String[] args) {
        File dir = new File("D:\\itcast");
        // a.获取当前目录对象下的全部一级文件名称到一个字符串数组返回。
        String[] names = dir.list();
        for (String name : names) {
            System.out.println(name);
        }
        // b.获取当前目录对象下的全部一级文件对象到一个File类型的数组返回。
        File[] files = dir.listFiles();
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }

        // ---------拓展------------
        File f1 = new File("D:\\itcast\\图片资源\\beautiful.jpg");
        long time = f1.lastModified(); // 最后修改时间!
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(time));
    }
}

递归搜索文件(非规律递归)

分析:
(1)定义一个方法用于做搜索。
(2)进入方法中进行业务搜索分析。
小结:
非规律化递归应该按照业务流程开发!

public class FileDemo01 {
    public static void main(String[] args) {
        //递归搜索文件
        searchFiles(new File("D:\\Software_Install\\SQLyog"),"SQLyog.exe");
    }

    /**
     * 去某个目录下搜索文件
     * @param dir 搜索文件目录
     * @param fileName 搜索文件名称
     */
    public static void searchFiles(File dir , String fileName){
        // 1.判断是否存在该路径,是否是文件夹
        if(dir.exists() && dir.isDirectory()){
            // 2.提取当前目录下的全部一级文件对象
            File[] files = dir.listFiles(); // null/[]
            // 3.判断是否存在一级文件对象(判断是否不为空目录)
            if(files!=null && files.length > 0){
                // 4.判断一级文件对象
                for (File f : files) {
                    // 5.判断file是文件还是文件夹
                    if(f.isFile()){
                        // 6.判断该文件是否为我要找的文件对象
                        if(f.getName().contains(fileName)){
                            System.out.println(f.getAbsolutePath());
                            //启动
                            try{
                                Runtime runtime = Runtime.getRuntime();
                                runtime.exec(f.getAbsolutePath());
                            }catch (IOException e){
                                e.printStackTrace();
                            }
                        }
                    }else{
                        // 7.该文件是文件夹,文件夹要递归进入继续寻找
                        searchFiles(f ,fileName);
                    }
                }
            }
        }
    }
}

你可能感兴趣的:(Java基础教程,java,开发语言)