java中File类的操作

知识模块
一.File类
    a.基础概念
    b.绝对路径和相对路径
    c.File类中的方法

如果需要详细源码可以去下方链接gitte查看
JavaSE: Java基础


一.File类
    a.基础概念
      我们在操作系统中(widows,linux,mac os)中经常操作两种数据:文件和文件夹
      操作系统通过路径来唯一定位一个文件或文件夹
      xx省xx市xx县xx街道xx小区xx单元xx门牌号   收件地址就类似操作系统中的路径
      文件:File
      文件夹:Directory(dir)
      路径:path
    b.绝对路径和相对路径
      1.绝对路径:以盘符开头的路径
           新建一个my_project工程,目录如下
              my_project
                 1.txt
           1.txt的绝对路径   D:\java_vev\workspace\java-se\my_project\src\1.txt
      2.相对路径:指的是一个文件或一个文件夹相对于另一个文件或文件夹的路径
           在IDEA工程下的文件或文件夹的相对参照物就是 当前工程
           my_project的绝对路径:
               D:\java_vev\workspace\java-se\my_project
           1.txt的绝对路径
               D:\java_vev\workspace\java-se\my_project\src\1.txt
           1.txt的相对路径:(去除当前文件或文件夹和参照物两者相同的路径即可)
               去除  D:\java_vev\workspace\java-se\my_project   路径:src\1.txt

           2.txt的绝对路径:
               D:\java_vev\workspace\java-se\my_project\2.txt
           2.txt的相对路径:   2.txt
    c.File类中的方法
      1.构造方法
           File类的构造方法:
           File类的构造方法:不会检测传入的路径是否在硬盘上真实存在


                File(String pathname)
                     pathname:路径名 既可以传相对路径,也可以传绝对路径
                     通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
                File(String parent, String child)
                     parent:父级路径  一般传入文件或文件夹前面的路径
                     child :子级路径  一般传入文件或文件夹
                     最终的路径就是将parent和child拼接的路径
                     根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
                File(File parent, String child)
                     根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
import java.io.File;

/*
File类的构造方法:
File类的构造方法:不会检测传入的路径是否在硬盘上真实存在


     File(String pathname)
          pathname:路径名 既可以传相对路径,也可以传绝对路径
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
     File(String parent, String child)
          parent:父级路径  一般传入文件或文件夹前面的路径
          child :子级路径  一般传入文件或文件夹
          最终的路径就是将parent和child拼接的路径
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
     File(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

 */
public class FileDemo01 {
    public static void main(String[] args) {
        //method01();
        //method02();
        File parent = new File("D:/java_vev/workspace/java-se/Project_JavaSE/Day22/");//将父级路径封装成一个File对象
        File file = new File(parent, "1.txt");
        System.out.println(file);//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt

    }

    private static void method02() {
        File file = new File("D:/java_vev/workspace/java-se/Project_JavaSE/Day22/", "1.txt");
        System.out.println(file);//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt

        File file2 = new File("D:/java_vev/workspace/", "java-se/Project_JavaSE/Day22/1.txt");
        System.out.println(file2);//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt

        File file3 = new File("M:/java_vev/workspace/", "java-se/Project_JavaSE/Day22/1.txt");
        System.out.println(file3);//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt

        File file4 = new File("D:/java_vev/", "java-se/Project_JavaSE/Day22/1.txt");
        System.out.println(file4);//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt
    }

    private static void method01() {
        //java中的转义字符都是以/开头的:\n  换行
        System.out.println("\nab\nc");
        //System.out.println("\a"); //\a不是Java中的转义字符,因此解析不了
        System.out.println("\\a");  //  \\的含义,第一个\将第二个\转义为普通的\字符

        //File file = new File("D:\\java_vev\\workspace\\java-se\\Project_JavaSE\\Day22\\1.txt");
        File file = new File("D:/java_vev/workspace/java-se/Project_JavaSE/Day22/1.txt");
    }
}
      2.成员方法
           1.判断方法
                File类中的判断功能:
                   boolean exists()
                          如果指定的路径存在该文件或文件夹那么结果为true,当前路径不存在该文件或文件夹就返回false
                   boolean isDirectory()
                          如果当前路径不是一个目录,结果返回false,如果是目录,返回true
                          如果路径在硬盘上不存在,结果返回false
                   boolean isFile()
                          如果当前路径不是一个文件,结果返回false,如果是文件,返回true
                          如果路径在硬盘上不存在,结果返回false
import java.io.File;

/*
File类中的判断功能:
   boolean exists()
          如果指定的路径存在该文件或文件夹那么结果为true,当前路径不存在该文件或文件夹就返回false
   boolean isDirectory()
          如果当前路径不是一个目录,结果返回false,如果是目录,返回true
          如果路径在硬盘上不存在,结果返回false
   boolean isFile()
          如果当前路径不是一个文件,结果返回false,如果是文件,返回true
          如果路径在硬盘上不存在,结果返回false
 */
public class FileDemo02 {
    public static void main(String[] args) {
        //method01();
        File file1 = new File("Day22/1.txt");
        System.out.println(file1.isDirectory());//false
        System.out.println(file1.exists());//true

        File file2 = new File("Day22/2.txt");
        System.out.println(file2.isDirectory());//false
        System.out.println(file2.exists());//false

        File file3 = new File("Day22/abc");
        System.out.println(file3.isDirectory());//true
        System.out.println(file3.isFile());//false
    }

    private static void method01() {
        File file = new File("D:\\java_vev\\workspace\\java-se\\Project_JavaSE\\Day22\\1.txt");
        System.out.println(file.exists());//true

        File file2 = new File("D:\\java_vev\\workspace\\java-se\\Project_JavaSE\\Day22\\2.txt");
        System.out.println(file2.exists());//false

       /* File file3 = new File("1.txt");
        System.out.println(file3.exists());//false*/

        //1.txt的绝对路径:D:\java_vev\workspace\java-se\Project_JavaSE\Day22\1.txt
        //Java_Project的绝对路径: D:\java_vev\workspace\java-se\Project_JavaSE
        //1.txt相对的是Java_Project工程的路径,而不是相对于Day22这个模块的路径

        File file3 = new File("Day22/1.txt");
        System.out.println(file3.exists());//true

        File file4 = new File("Day22/abc");
        System.out.println(file4.exists());//true
    }
}
           2.创建方法
                File类的创建功能:
                      boolean createNewFile()
                          可以根据绝对路径或者相对路径创建一个空文件,如果创建成功,返回true
                          如果指定的路径中当前文件已经存在,那么ceeatNewFile()不在创建该文件,而且返回false
                          如果指定的路径在内存中不存在,那么直接抛出IOException 系统找不到指定的路径

                File类中的创建功能
                     boolean mkdir()
                          根据指定的路径创建文件夹,如果创建成功,返回true
                          如果指定的路径表示该文件夹已存在,那么mkdir()方法不再创建该文件,结果返回false
                          mkdir()只能创建文件夹,不能创建文件
                          mkdir()方法不能创建多级文件夹,只能创建单级文件夹

                     boolean mkdirs()
                          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
                          mkdir()方法既可以创建单级目录,又可以创建多级目录

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

/*
File类的创建功能:
      boolean createNewFile()
          可以根据绝对路径或者相对路径创建一个空文件,如果创建成功,返回true
          如果指定的路径中当前文件已经存在,那么ceeatNewFile()不在创建该文件,而且返回false
          如果指定的路径在内存中不存在,那么直接抛出IOException 系统找不到指定的路径
 */
public class FileDemo03 {
    public static void main(String[] args) throws IOException {
        File file = new File("Day22/2.txt");
        System.out.println(file.createNewFile());//true

        File file2 = new File("Day22/1.txt");
        System.out.println(file2.createNewFile());//false

        File file3 = new File("M:/Day22/1.txt");//"main" java.io.IOException: 系统找不到指定的路径。
        System.out.println(file3.createNewFile());//false
    }
}

import java.io.File;

/*
File类中的创建功能
     boolean mkdir()
          根据指定的路径创建文件夹,如果创建成功,返回true
          如果指定的路径表示该文件夹已存在,那么mkdir()方法不再创建该文件,结果返回false
          mkdir()只能创建文件夹,不能创建文件
          mkdir()方法不能创建多级文件夹,只能创建单级文件夹

     boolean mkdirs()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
          mkdir()方法既可以创建单级目录,又可以创建多级目录
 */
public class FileDemo04 {
    public static void main(String[] args) {
        //method01();
      /*  File file = new File("Day22/ghk/lm");
        System.out.println(file.mkdir());//false*/

        File file2 = new File("Day22/ghk/lm");
        System.out.println(file2.mkdirs());//true


    }

    private static void method01() {
    /* File file = new File("Day22/def");
     System.out.println(file.mkdir());//true*/

       /* File file2 = new File("Day22/abc");
        System.out.println(file2.mkdir());//false*/

        File file3 = new File("Day22/3.txt");
        System.out.println(file3.mkdir());
    }
}
           3.删除功能:
                File类的删除功能:
                     boolean delete()
                          删除此抽象路径名表示的文件或目录。
                          File类的delete()方法删除文件或文件夹不走回收站
                          File类的delete()方法只能删除一个空件夹,如果想要删除一个非空文件夹,需要先删除这个文件夹中的所有内容,然后再删除该文件
                             ghk
                                abc
                                   def
                                      1.txt
                          delete()方法既可以删除一个文件也可以删除一个文件夹,如果删除成功返回true,否则返回false


/*
File类的删除功能:
     boolean delete()
          删除此抽象路径名表示的文件或目录。
          File类的delete()方法删除文件或文件夹不走回收站
          File类的delete()方法只能删除一个空件夹,如果想要删除一个非空文件夹,需要先删除这个文件夹中的所有内容,然后再删除该文件
             ghk
                abc
                   def
                      1.txt
          delete()方法既可以删除一个文件也可以删除一个文件夹,如果删除成功返回true,否则返回false

 */
public class FileDemo05 {
    public static void main(String[] args) {
        //method01();
     /*   File file = new File("Day22/3.txt");
        System.out.println(file.delete());//true*/

        /*File file2 = new File("Day22/ghk");
        System.out.println(file2.delete());//false*/


        File file3 = new File("Day22/ghk/lm");
        System.out.println(file3.delete());//true

        File file4 = new File("Day22/ghk");
        System.out.println(file4.delete());//true


    }

    private static void method01() {
        File file = new File("Day22/2.txt");
        System.out.println(file.delete());//true
    }
}
           4.获取功能
                File类的获取功能:
                       String getName()
                          返回的是路径中的最后一级路径(文件或文件夹)

                       String getPath()
                          如果File对象中封装的是相对路径,那么getPath结果就是相对路径
                          如果File对象中封装的是绝对路径,那么getPath结果就是绝对路径

                       long length()
                          获取文件的长度,单位是byte
                          不能获取文件夹的长度

                       String getParent()
                          该方法返回父级路径(最后一级路径前面的路径)
                          如果该路径只有一级路径(没有父级路径),结果为null

                       File getParentFile()
                          返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。

                       File getAbsoluteFile()
                          无论File对象中封装的是什么路径,最终都返回以一个绝对路径

                       String getAbsolutePath()
                          无论File对象中封装的是什么路径,最终都返回以一个绝对路径

                       File类的获取功能
                          String[] list()
                                 获取指定路径下的文件或文件夹的名称,将这些名称封装到一个字符串数组中,返回这个字符串数组
                                 只能获取一级文件夹下的内容,子级文件夹下的内容获取不到
                                 如果路径表示一个文件路径,该方法返回null,遍历null会报  java.lang.NullPointerException

                           File[] listFiles()
                                 获取指定路径下的文件或文件夹的路径,将这些路径封装到一个file[]数组中,然后返回该数组
                                 如果指定的文件夹路径是相对路径,那么将来输出File[]数组中的file对象,最终结果都是一个个相对路径
                                 如果指定的文件夹路径是绝对路径,那么将来输出File[]数组中的file对象,最终结果都是一个个绝对路径
                                 只能获取一级文件夹下的内容,子级文件夹下的内容获取不到
                                 如果路径表示一个文件路径,该方法返回null,遍历null会报  java.lang.NullPointerException


import java.io.File;

/*
File类的获取功能:
       String getName()
          返回的是路径中的最后一级路径(文件或文件夹)

       String getPath()
          如果File对象中封装的是相对路径,那么getPath结果就是相对路径
          如果File对象中封装的是绝对路径,那么getPath结果就是绝对路径

       long length()
          获取文件的长度,单位是byte
          不能获取文件夹的长度

       String getParent()
          该方法返回父级路径(最后一级路径前面的路径)
          如果该路径只有一级路径(没有父级路径),结果为null

       File getParentFile()
          返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。

       File getAbsoluteFile()
          无论File对象中封装的是什么路径,最终都返回以一个绝对路径

       String getAbsolutePath()
          无论File对象中封装的是什么路径,最终都返回以一个绝对路径
 */
public class FileDemo06 {
    public static void main(String[] args) {
        //method01();
        //method02();
        //method03();

        File file = new File("Day22/abc/2.txt");
        System.out.println(file.getAbsolutePath());//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\abc\2.txt

        File file2 = new File("D:\\java_vev\\workspace\\java-se\\Project_JavaSE\\Day22\\abc\\1.txt");
        System.out.println(file2.getAbsolutePath());//D:\java_vev\workspace\java-se\Project_JavaSE\Day22\abc\1.txt

        File file3 = new File("Day22/abc/2.txt");
        System.out.println(file3.getAbsoluteFile().getName());//2.txt
    }

    private static void method03() {
        File file = new File("Day22/1.txt");
        System.out.println(file.getParent());//Day22

        File file2 = new File("Day22/abc/2.txt");
        System.out.println(file2.getParent());//Day22\abc

        File file3 = new File("1.txt");
        System.out.println(file3.getParent());//null

        File file4 = new File("Day22/abc/2.txt");

        File parentFile = file4.getParentFile();
        //System.out.println(parentFile);//Day22\abc
        System.out.println(parentFile.exists());//true
    }


    private static void method02() {
        File file = new File("Day22/1.txt");
        System.out.println(file.length());

        File file2 = new File("Day22/abc");
        System.out.println(file2.length());//0
    }

    private static void method01() {
        File file = new File("Day22/1.txt");
        System.out.println(file.getName());//1.txt

        File file2 = new File("Day22/ac");
        System.out.println(file2.getName());//ac

        File file3 = new File("Day22/1.txt");
        System.out.println(file3.getPath());//Day22\1.txt

        File file4 = new File("D:\\java_vev\\workspace\\java-se\\Project_JavaSE\\Day22\\1.txt");
        System.out.println(file4.getPath());//
    }
}

你可能感兴趣的:(java,开发语言)