zoukankan      html  css  js  c++  java
  • Java第二十九天,文件及目录的管理,File类

    一、基础知识点

    1.路径分隔符

    (1)什么是路径分隔符?

    这个多被应用在环境变量设置当中,例如当我设置Path环境变量时,多个环境变量的路径要用 ';'(Windows系统用封号分隔)或 ':'(Linux系统用冒号隔开)

    (2)如何获取当前系统的路径分隔符

    File.pathSeparator
    File.pathSeparatorChar
    
    //pathSeparator是静态方法,所以可以直接使用类名调用

    2.文件名称分隔符

    (1)什么是文件名称分隔符?

    当我们找一个文件时,通常需要得到该文件的文件路径(用过Linux系统的人对这个感触颇深),路径当中有两个元素,一个是文件夹名,另一个是分隔符,这个分隔符就是文件名称分隔符

    (2)如何获取当前系统的文件名称分隔符

    File.separator
    File.separatorChar;
    
    //separator是静态方法,所以可以直接使用类名调用

    3.绝对路径和相对路径

    (1)相对路径:由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系

    (2)绝对路径:完整的描述文件位置的路径

    二、使用教程

    1.构造方法

    File(File parent, String child) ===> 从父抽象路径名和子路径名字符串创建新的File实例
    File(String pathname) ===> 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
    File(String parent, String child) ===> 从父路径名字符串和子路径名字符串创建新的File实例
    File(URI uri) ===> 通过将给定的 file: URI转换为抽象路径名来创建新的File实例

    import java.io.File;
    
    public class Two {
    
        public static void main(String[] args) {
    
            File file = new File("F:\");
            String child = new String("a.txt");
            File file1 = new File(file,child);
            System.out.println(file1);
    
            String parent = new String("F:\");
            child = "b.txt";
            File file2 = new File(parent,child);
            System.out.println(file2);
    
            String path = new String("F:\c.txt");
            File file3 = new File(path);
            System.out.println(file3);
        }
    }

    2.常用方法

    File getAbsoluteFile() ===> 得到指定文件的规范File类对象

    String getAbsolutePath() ===> 得到指定文件的绝对路径

    String getPath ===> 得到指定文件的绝对或相对路径(根据File类对象类型决定)

    String getName() ===> 返回文件或目录的名称

    long length() ===> 返回文件的大小(以字节为单位,且目录没有该属性)

    boolean isDirectory() ===> 判断该对象是否为目录

    boolean isFile() ===> 判断该对象是否为普通文件

    boolean exists() ===> 判断该文件或目录是否存在

    import java.io.File;
    
    public class Two {
    
        public static void main(String[] args) {
    
            File file = new File("F:\lanYue\a.txt");
            File fileTemp = new File("b.txt");
    
            System.out.println(file.getAbsolutePath());
            System.out.println(fileTemp.getAbsolutePath());
            System.out.println(file.getPath());
            System.out.println(fileTemp.getPath());
            System.out.println(file.getName());
            System.out.println(fileTemp.getName());
            System.out.println(file.length());
            System.out.println(fileTemp.length());
            System.out.println(file.isDirectory());
            System.out.println(file.isFile());
            System.out.println(file.exists());
        }
    }

    3.处理文件、目录

    (1)创建文件

    booleancreatelewFile() ===> 当且仅当该文件不存在时,创建新的空文件

    static FilecreateTempFile(String prefix,String suffix) ===> 使用给定的前缀和后缀在默认临时目录中创建一个新的空文件

    static FilecreateTempFile(String prefix,String suffix,File directory) ===>使用给定的前缀和后缀在指定的目录中创建新的空文件

    (2)创建目录

    boolean mkdir() ===> 创建由此抽象路径名命名的目录
    boolean mkdirs() ===> 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录

    public class Three {
    
        public static void main(String[] args) {
    
            File directory = new File("F:\myData\");
            File document = new File("info.txt");
    
            if(!directory.exists()){
                if(!directory.isDirectory()){
                    directory.mkdirs();
    
                    if(!(new File(directory,document.getName()).exists())){
                        try {
                            new File(directory,document.getName()).createNewFile();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }

    注意:无论创建文件还是目录,其指定方法已经带有相关的检测与判断功能(如果存在,则返回false,且不执行创建操作。反之......),这里引用其他功能知识为了熟悉常用的文件操作方法

    (3)删除

    boolean delete() 

    注意:

    1. 可以用来删除目录或文件
    2. 删除非空目录会失败并且返回false
    3. 删除不存在的文件或目录会返回false
    4. 删除是直接从硬盘删除,并不会走回收站流程

    void delete0nExit() ===> 程序运行deleteOnExit成功后,File并没有直接删除,而是在虚拟机正常运行结束后才会删除

    public class Three {
    
        public static void main(String[] args) {
    
            File directory = new File("F:\myData\");
            File document = new File("info.txt");
    
            if(!directory.exists()){
                if(!directory.isDirectory()){
                    directory.mkdirs();
    
                    if(!(new File(directory,document.getName()).exists())){
                        try {
                            new File(directory,document.getName()).createNewFile();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
    
            System.out.println(new File(directory,document.getName()).delete());
        }

    4.遍历

    String[] list() ===> 返回一个字符串数组,遍历目录中的文件和目录

    File[] listFiles() ===> 返回一个File类数组,遍历目录中的文件

    import java.io.File;
    import java.io.IOException;
    
    public class All {
        public static void main(String[] args) {
            createFiles();
            showFiles();
            showFilesStruct(new File("F:\"));
            delete();
        }
    
        private static void createFiles(){
            File directory = new File("F:\");
            String file;
    
            for (int i = 100; i <= 200; i++) {
                try {
                    file = String.valueOf(i) + ".txt";
                    new File(directory,file).createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        private static void showFiles(){
            File directory = new File("F:\");
            File[] files = directory.listFiles();
            for (File file : files) {
                System.out.println(file);
            }
        }
    
        private static void showFilesStruct(File directory){
            File[] files = directory.listFiles();
            if(files != null){
                System.out.println("非空目录:" + directory.getName());
                for (File file : files) {
                    if(file.isDirectory()){
                        showFilesStruct(file);
                    }else{
                        System.out.println("文件:" + file.getAbsoluteFile());
                    }
                }
            }else{
                System.out.println("空目录:" + directory.getName());
            }
        }
    
        private static void delete(){
            File directory = new File("F:\");
            File[] files = directory.listFiles();
            for (File file : files) {
                file.delete();
            }
        }
    }
    

    5.修改文件/目录名

    boolean renameTo(File dest) ===> 重命名由此抽象路径名表示的文件

    注意:

    1.重命名成功会返回true,失败会返回false

    2.重命名一定程度上可以起到移动的功能

    3.移动时,只能把目标文件或目录移动到已存在目录下,否则会失败

    import java.io.File;
    import java.io.IOException;
    
    public class ReName {
        public static void main(String[] args) {
            File oldFile = new File("F:\old.txt");
            try {
                oldFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                Thread.sleep(1500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            File newFile = new File("F:\new.txt");
            System.out.println(oldFile.renameTo(newFile));
        }
    }
  • 相关阅读:
    Postgres的TOAST技术
    Postgresql 分区表 一
    Postgresql 用户管理
    Linux FIO
    haproxy
    RHEL7/CentOS7 Network Service开机无法启动的解决方法
    Cockroachdb 四、用户管理及授权
    Cockroachdb 三、副本设置
    Cockroachdb 二、手动部署
    Cockroachdb 一、系统环境
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700448.html
Copyright © 2011-2022 走看看