File类的概述
java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
File类部分构造方法
/** * 从父抽象路径名和子路径名字符串创建新的File实例。 */ private File(String child, File parent) { ... } /** * 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。 */ public File(String pathname) { ... }
路径分隔符和默认名称分隔符
// 依赖于系统的默认名称分隔符字符。此字段初始化为包含系统属性<code>file.separator</code>值的第一个字符。 // 在UNIX系统上,此字段的值为<code>'/'</code>;在Microsoft Windows系统上,此字段的值为<code>'\'</code>。 public static final char separatorChar = fs.getSeparator();
// 依赖于系统的默认名称分隔符字符,为方便起见表示为字符串。 public static final String separator = "" + separatorChar;
// 依赖于系统的路径分隔符字符。此字段初始化为包含系统属性<code>path.separator</code>值的第一个字符。 // 此字符用于将文件名按<em>路径列表指定的文件序列分隔开。在UNIX系统上,此字符为<code>':'</code>; // 在Microsoft Windows系统上,此字符为<code>';'</code>。 public static final char pathSeparatorChar = fs.getPathSeparator();
// 依赖于系统的路径分隔符字符,为了方便起见表示为字符串 public static final String pathSeparator = "" + pathSeparatorChar;
下面以基于Unix系统的macOS系统为例
依赖于系统的默认名称分隔符
import java.io.File; public class Demo01Separator { public static void main(String[] args) { // 依赖于系统的默认名称分隔符字符。 char separatorChar = File.separatorChar; System.out.println("系统的默认名称分隔符字符是'" + separatorChar + "'"); // 依赖于系统的默认名称分隔符字符,为方便起见表示为字符串。 String separatorString = File.separator; System.out.println("系统的默认名称分隔符字符是'" + separatorString + "'"); } }
控制台输出: 系统的默认名称分隔符字符是'/' 系统的默认名称分隔符字符是'/'
依赖于系统的路径分隔符
import java.io.File; public class Demo01PathSeparator { public static void main(String[] args) { // 依赖于系统的路径分隔符字符 char pathSeparatorChar = File.pathSeparatorChar; System.out.println("依赖于系统的路径分隔符字符是'" + pathSeparatorChar + "'"); // 依赖于系统的路径分隔符字符,为了方便起见表示为字符串 String pathSeparatorString = File.pathSeparator; System.out.println("依赖于系统的路径分隔符字符是'" + pathSeparatorString + "'"); } }
控制台输出: 依赖于系统的路径分隔符字符是':' 依赖于系统的路径分隔符字符是':'
程序很多时候都是跨平台的,所以不要把路径写死,可以使用以上几个静态成员变量获取分隔符
File类的部分构造方法的使用
public class Demo02File { public static void main(String[] args) { // 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。 File file1 = new File("~/IdeaProjects/Study/src/view/study/demo27/Demo02File.java"); System.out.println(file1); // 从父抽象路径名和子路径名字符串创建新的File实例。 File file2 = new File("~/IdeaProjects/Study/", "/src/view/study/demo27/Demo02File.java"); System.out.println(file2); } }
控制台输出: ~/IdeaProjects/Study/src/view/study/demo27/Demo02File.java ~/IdeaProjects/Study/src/view/study/demo27/Demo02File.java
File类获取功能的常用方法
public String getAbsolutePath():返回此File的绝对路径名字符串。 public String getPath():将此File转换为路径名字符串。 public String getName():返回由此File表示的文件或目录的名称。 public long length():返回由此File表示的文件的长度。
这几个方法的使用
import java.io.File; public class Demo01FileMethod { public static void main(String[] args) { File file = new File("~/IdeaProjects/Study/src/view/study/demo27/Demo01FileMethod.java"); // 返回此File的绝对路径名字符串。 String fileAbsolutePath = file.getAbsolutePath(); // 将此File转换为路径名字符串。 String filePath = file.getPath(); // 返回由此File表示的文件或目录的名称。 String fileName = file.getName(); // 返回由此File表示的文件的长度。 long fileLength = file.length(); System.out.println("绝对路径:" + fileAbsolutePath); System.out.println("路径名字符串:" + filePath); System.out.println("文件或目录的名称:" + fileName); System.out.println("文件的长度:" + fileLength); } }
控制台输出: 绝对路径:/Users/liyihua/IdeaProjects/Study/~/IdeaProjects/Study/src/view/study/demo27/Demo01FileMethod.java 路径名字符串:~/IdeaProjects/Study/src/view/study/demo27/Demo01FileMethod.java 文件或目录的名称:Demo01FileMethod.java 文件的长度:0
文件路径不存在,返回文件的长度为0
File类判断功能的常用方法
public boolean exists():此File表示的文件或目录是否实际存在。 public boolean isDirectory():此File表示的是否为目录。 public boolean isFile():此File表示的是否为文件。
这几个方法的使用
import java.io.File; public class Demo02FileMethod { public static void main(String[] args) { File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27"); boolean exiFile = file.exists(); boolean isD = file.isDirectory(); boolean isF = file.isFile(); System.out.println("文件或目录是否实际存在:" + exiFile); System.out.println("是否为目录:" + isD); System.out.println("是否为文件:" + isF); } }
控制台输出: 文件或目录是否实际存在:true 是否为目录:true 是否为文件:false
判断是否为文件或是否为目录的时候,路径必须存在,否则都返回false(计算机中只有文件和目录)
File类创建删除功能的常用方法
public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 public boolean delete():删除由此File表示的文件或目录。 public boolean mkdir():创建由此File表示的目录。 public boolean mkdirs():创建由此File表示的目录,包括任何必需但不存在的父目录。
创建一个新的空文件
import java.io.File; import java.io.IOException; public class Demo03FileMethod { public static void main(String[] args) throws IOException { File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/test.txt"); file.createNewFile(); } }
所在的目录下创建了一个文件——test.txt
删除一个文件或目录
import java.io.File; import java.io.IOException; public class Demo04FileMethod { public static void main(String[] args) throws IOException { File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/test.txt"); file.delete(); } }
所在的目录下的一个文件(test.txt)被删除
创建一个目录
import java.io.File; import java.io.IOException; public class Demo05FileMethod { public static void main(String[] args) throws IOException { File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/test"); file.mkdir(); } }
所在的目录下创建了一个目录——test
创建一个目录集(父子爷孙目录)
import java.io.File; import java.io.IOException; public class Demo06FileMethod { public static void main(String[] args) throws IOException { File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/t1/t2/t3"); file.mkdirs(); } }
在目录“/Users/liyihua/IdeaProjects/Study/src/view/study/demo27”下创建了目录 /t1/t2/t3
File类目录的遍历功能
public String[] 1ist():返回一个String数组,表示该File目录中的所有子文件或目录。 public File[] listFiles():返回一个File数组,表示该File目录中的所有的子文件或目录。
这两个方法的使用
import java.io.File; public class Demo07FileMethod { public static void main(String[] args) { File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27"); // 返回一个String数组 String[] stringList = file.list(); // 返回一个File数组 File[] fileList = file.listFiles(); // 遍历数组 for (String s : stringList) { System.out.println(s); } System.out.println("\n\n"); for (File f : fileList) { System.out.println(f); } } }
控制台输出: Demo01PathSeparator.java Demo01File.java Demo01FileMethod.java Demo06FileMethod.java Demo07FileMethod.java Demo02FileMethod.java 了解File类 Demo05FileMethod.java Demo02File.java Demo04FileMethod.java Demo01Separator.java Demo03FileMethod.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo01PathSeparator.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo01File.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo01FileMethod.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo06FileMethod.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo07FileMethod.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo02FileMethod.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/了解File类 /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo05FileMethod.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo02File.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo04FileMethod.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo01Separator.java /Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo03FileMethod.java
来源:https://www.cnblogs.com/liyihua/p/12247345.html