自学内容网 自学内容网

Java File类基础

概述 

在Java中,java.io.File类是用于表示文件和目录路径的类,它提供了一系列方法来操作文件系统,包括创建、删除、重命名文件和目录,以及检查文件和目录的属性等。File类的实例可以表示或不表示实际的文件系统对象,例如文件或目录。文件系统可以对单个对象可以具有多组访问权限。文件系统对单个对象可以具有多组访问权限。例如,一组可能适用于对象的所有者 ,另一组可能适用于所有其他用户。对象的访问权限可能会导致此类中的某些方法失败。 

File类的基本用法 

File类有多种构造方法,最常用的几种如下:

一、构造方法

  • File(String pathname)
    • 解释
      • 这个构造方法接受一个表示文件或目录路径的字符串,然后将其转换为抽象路径名来创建一个File实例。路径名可以是绝对路径(从根目录开始的完整路径),也可以是相对路径(相对于当前工作目录的路径)。
    • 示例
import java.io.File;

public class FileConstructorExample {
    public static void main(String[] args) {
        // 创建一个表示文件的File实例,使用相对路径
        File file1 = new File("test.txt");
        // 创建一个表示目录的File实例,使用绝对路径
        File dir1 = new File("C:/Users/user/Desktop/mydir");
    }
}
  • File(String parent, String child)
    • 解释
      • 此构造方法用于从父路径名字符串和子路径名字符串创建新的File实例。父路径是包含子路径的目录路径,子路径是相对于父路径的文件或子目录路径。
    • 示例
import java.io.File;

public class FileConstructorExample {
    public static void main(String[] args) {
        // 父路径是当前目录下的"parentDir",子路径是"childFile.txt"
        File file2 = new File("parentDir", "childFile.txt");
        // 父路径是绝对路径,子路径是子目录"subdir"
        File dir2 = new File("C:/Users/user/Desktop", "subdir");
    }
}
  • File(File parent, String child)
    • 解释
      • 这里是从父抽象路径名(已经存在的File实例表示父目录)和子路径名字符串来创建新的File实例。
    • 示例
import java.io.File;

public class FileConstructorExample {
    public static void main(String[] args) {
        File parentDir = new File("C:/Users/user/Desktop");
        // 使用已有的父目录File实例和子路径创建File实例
        File file3 = new File(parentDir, "newFile.txt");
        File subDir = new File(parentDir, "newSubDir");
    }
}

二、操作文件和目录的方法

  • exists()
    • 解释
      • 这个方法用于检查文件或目录是否存在。如果文件或目录存在,则返回true,否则返回false
    • 示例
import java.io.File;

public class FileMethodsExample {
    public static void main(String[] args) {
        File file = new File("test.txt");
        if (file.exists()) {
            System.out.println("文件或目录存在");
        } else {
            System.out.println("文件或目录不存在");
        }
    }
}
  • isDirectory()
    • 解释
      • 判断File对象是否表示一个目录。如果是目录,则返回true,如果是文件或者不存在,则返回false
    • 示例
import java.io.File;

public class FileMethodsExample {
    public static void main(String[] args) {
        File dir = new File("C:/Users/user/Desktop/mydir");
        if (dir.isDirectory()) {
            System.out.println("是目录");
        } else {
            System.out.println("不是目录");
        }
    }
}
  • isFile()
    • 解释
      • 判断File对象是否表示一个普通文件。如果是文件,则返回true,如果是目录或者不存在,则返回false
    • 示例
import java.io.File;

public class FileMethodsExample {
    public static void main(String[] args) {
        File file = new File("test.txt");
        if (file.isFile()) {
            System.out.println("是文件");
        } else {
            System.out.println("不是文件");
        }
    }
}
  • createNewFile()
    • 解释
      • 用于创建一个新的空文件。如果文件不存在,则创建成功并返回true;如果文件已经存在,则创建失败并返回false。这个方法可能会抛出IOException,所以需要进行异常处理。
    • 示例
import java.io.File;
import java.io.IOException;

public class FileMethodsExample {
    public static void main(String[] args) {
        File newFile = new File("newFile.txt");
        try {
            if (newFile.createNewFile()) {
                System.out.println("文件创建成功");
            } else {
                System.out.println("文件已存在");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • mkdir()
    • 解释
      • 用来创建一个新的目录。如果目录创建成功,则返回true;如果目录已经存在或者创建失败(例如,由于父目录不存在或者没有权限等原因),则返回false
    • 示例
import java.io.File;

public class FileMethodsExample {
    public static void main(String[] args) {
        File newDir = new File("newDir");
        if (newDir.mkdir()) {
            System.out.println("目录创建成功");
        } else {
            System.out.println("目录创建失败");
        }
    }
}
  • mkdirs()
    • 解释
      • 创建一个目录及其所有必要的父目录。如果创建成功,则返回true;如果目录已经存在,则返回false
    • 示例
import java.io.File;

public class FileMethodsExample {
    public static void main(String[] args) {
        File newDirWithParents = new File("parentDir/childDir");
        if (newDirWithParents.mkdirs()) {
            System.out.println("目录及其父目录创建成功");
        } else {
            System.out.println("目录创建失败");
        }
    }
}
  • delete()
    • 解释
      • 用于删除一个文件或目录。如果是文件且删除成功,则返回true;如果是目录且目录为空且删除成功,也返回true;否则返回false
    • 示例
import java.io.File;

public class FileMethodsExample {
    public static void main(String[] args) {
        File fileToDelete = new File("test.txt");
        if (fileToDelete.delete()) {
            System.out.println("文件删除成功");
        } else {
            System.out.println("文件删除失败");
        }
    }
}
  • renameTo(File dest)
    • 解释
      • 重命名或移动文件。如果重命名或移动成功,则返回true;否则返回falsedest是目标文件或目录的File实例。
    • 示例
import java.io.File;

public class FileMethodsExample {
    public static void main(String[] args) {
        File oldFile = new File("oldFile.txt");
        File newFile = new File("newFile.txt");
        if (oldFile.renameTo(newFile)) {
            System.out.println("文件重命名或移动成功");
        } else {
            System.out.println("文件重命名或移动失败");
        }
    }
}
  • length()
    • 解释
      • 返回文件的长度,单位是字节。如果是目录,则返回值无意义。如果文件不存在,则返回0。
    • 示例
import java.io.File;

public class FileMethodsExample {
    public static void main(String[] args) {
        File file = new File("test.txt");
        long length = file.length();
        System.out.println("文件长度为:" + length + "字节");
    }
}
  • lastModified()
  • 解释
    • 获取文件最后修改的时间戳,返回值是从1970年1月1日00:00:00 UTC开始到文件最后修改时间所经过的毫秒数。如果文件不存在,则返回0。
  • 示例
import java.io.File;

public class FileMethodsExample {
    public static void main(String[] args) {
        File file = new File("test.txt");
        long lastModified = file.lastModified();
        System.println("文件最后修改时间:" + new java.util.Date(lastModified));
    }
}
  • list()和listFiles()
  • 解释
    • list()方法返回一个字符串数组,其中包含目录中的文件和子目录的名称(不包含路径信息)。如果是文件或者目录不存在,则返回null
    • listFiles()方法返回一个File数组,其中包含目录中的文件和子目录的File实例。如果是文件或者目录不存在,则返回null
  • 示例
import java.io.File;

public class FileMethodsExample {
    public static void main(String[] args) {
        File dir = new File("C:/Users/user/Desktop/mydir");
        // list()方法示例
        String[] fileNames = dir.list();
        if (fileNames!= null) {
            for (String name : fileNames) {
                System.out.println("目录中的名称:" + name);
            }
        }
        // listFiles()方法示例
        File[] files = dir.listFiles();
        if (files!= null) {
            for (File file : files) {
                System.out.println("目录中的File实例:" + file.getAbsolutePath());
            }
        }
    }
}

三、注意事项

  1. 路径分隔符
    • 在Windows系统中,路径分隔符通常是反斜杠\,但在Java字符串中,反斜杠是转义字符的起始符号,因此需要使用双反斜杠\\\\或正斜杠/来表示路径分隔符。例如,在Windows系统中表示C:\Users\user\Desktop这个路径,可以写成C:/Users/user/Desktop或者C:\\Users\\user\\Desktop
  2. 异常处理
    • 许多File类的方法在操作文件和目录时可能会抛出IOException(如createNewFile()方法),所以在使用这些方法时需要进行异常处理,通常是使用try - catch块来捕获异常并进行相应的处理。

原文地址:https://blog.csdn.net/2303_79480422/article/details/143817320

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!