大家好,又见面了,我是你们的朋友全栈君。
java.io.File
类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
Java把电脑中的文件和文件夹(目录)封装为一个File类,我们可以使用File类对文件和文件夹进行操作。
File类的方法可以实现:
- 1.创建一个文件/文件夹
- 2.删除文件/文件夹
- 3.获取文件/文件夹
- 4.判断文件/文件夹是否存在
- 5.对文件夹进行遍历
- 6.获取文件的大小
File类是一个与系统无关的类,任何操作系统都可以使用这个类中的方法
重点:File:文件;Directory:文件夹/目录;Path:路径
1 静态成员变量
-
static String pathSeparator
与系统有关的分隔符,为了方便,被表示成一个字符串 -
static char pathSeparatorChar
与系统有关的路径分隔符 -
static String separator
与系统有关的默认分隔符,为了方便,表示成一个字符串 -
static char separatorChar
与系统有关的默认名称分隔符
代码示例如下:
String pathSeparator = File.pathSeparator;
System.out.println(pathSeparator);//;
char pathSeparatorChar = File.pathSeparatorChar;
System.out.println(pathSeparatorChar);//;
String separator = File.separator;
System.out.println(separator);//\
char separatorChar = File.separatorChar;
System.out.println(separatorChar);//\
2 相对路径与绝对路径
路径:
- 绝对路径:是一个完整的路径,以盘符(C:,D:,E:)开始的路径
如:C:\Users\Lee\Java\abc.txt - 相对路径:是一个简化的路径,相对指的是对于当前项目的根目录*(C:\Users\Lee\Java)*
如果使用当前项目的根目录,路径可以简化书写:
C:\Users\Lee\Java\abc.txt → abc.txt(可以省略项目的根目录)
注意:
1.路径不区分大小写
2.路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠
3 构造方法
-
public File(String pathname)
:通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
参数:String pathname (字符串的路径名称)路径可以是文件结尾,也可以是以文件夹结尾,可以是相对路径也可以是绝对路径,路径可以存在也可以不存在
创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况 -
public File(String parent, String child)
:从父路径名字符串和子路径名字符串创建新的 File实例。参数:把路径分成两部分
String parents
:父路径
String Children
:子路径好处:父路径和子路径可以单独书写,使用起来非常灵活,父路径和子路径都可以变化
-
public File(File parent, String child)
:从父抽象路径名和子路径名字符串创建新的 File实例。参数:把路径分成两部分
String parents
:父路径
String Children
:子路径好处:
父路径和子路径可以单独书写,使用起来非常灵活,父路径和子路径都可以变化
父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象
代码如下:
public class File02 {
public static void main(String[] args) {
/* public File(String pathname):通过将给定的**路径名字符串**转换为抽象路径名来创建新的 File实例。 */
File f1=new File("D:\\Java\\a.txt");
System.out.println(f1);//D:\Java\a.txt(重写了toString方法)
File f2=new File("D:\\Java");
System.out.println(f1);//D:\Java
/* public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。 */
File f3=new File("D:\\","a.txt");
System.out.println(f3);//D:\a.txt
/* public File(File parent, String child):从父抽象路径名和子路径名字符串创建新的 File实例。 */
File f4=new File(f2,"c.txt");
System.out.println(f4);//D:\Java\c.txt
}
}
4 常用方法
4.1 获取功能的方法
-
public String getAbsolutePath()
:返回此File的绝对路径名字符串。 -
public String getPath()
:将此File转换为路径名字符串。 -
public String getName()
:返回由此File表示的文件或目录的名称。 -
public long length()
:返回由此File表示的文件的长度。
API中说明:length(),表示文件的长度。但是File对象表示目录,则返回值未指定。
代码示例如下:
import java.io.File;
public class File03 {
public static void main(String[] args) {
method01();
method02();
method03();
method04();
}
//public String getAbsolutePath():返回此File的绝对路径名字符串。
private static void method01() {
File f1=new File("D:\\CODE\\JAVA\\03-09-code\\src\\me");
String absolutePath1 = f1.getAbsolutePath();
System.out.println(absolutePath1);//D:\CODE\JAVA\03-09-code\src\me
File f2=new File("a.txt");
String absolutePath2 = f2.getAbsolutePath();
System.out.println(absolutePath2);//D:\CODE\JAVA\a.txt
}
//public String getPath():将此File转换为路径名字符串。
private static void method02() {
File f1=new File("D:\\CODE\\JAVA\\03-09-code\\src\\me");
String path = f1.getPath();
System.out.println(path);
File f2=new File("D:\\CODE\\JAVA");
String path1 = f2.getPath();
System.out.println(path1);//D:\CODE\JAVA
}
//public String getName():返回由此File表示的文件或目录的名称。(获取的就是构造方法传递路径的结尾部分)
private static void method03(){
File f1=new File("C:\\Users\\lee\\Desktop\\lunwen");
String name = f1.getName();
System.out.println(name);//lunwen
File f2=new File("C:\\Users");
String name1 = f2.getName();
System.out.println(name1);//Users
}
//public long length():返回由此File表示的文件的长度。(获取构造方法指定的文件的大小,以字节为单位)
/* 注意:文件夹是没有大小概念的,不能获取文件夹的大小 如果构造方法中给出的路径不存在,那么length方法返回0 */
private static void method04(){
File f1=new File("D:\\CODE\\JAVA\\03-09-code\\src\\me");
long length = f1.length();
System.out.println(length);//0
File f2=new File("D:\\CODE\\JAVA\\03-09-code\\src\\me\\lwj\\s01\\Abstract.java");
long length2 = f2.length();
System.out.println(length2);//1270
}
}
4.2 判断功能的方法
public boolean exists()
:此File表示的文件或目录是否实际存在。
用于判断构造方法中的路径是否存在,返回true或者false
public boolean isDirectory()
:此File表示的是否为目录。
用于判断构造方法中给定的路径是否以文件夹结尾
public boolean isFile()
:此File表示的是否为文件。
用于判断构造方法中给定的路径是否以文件结尾
注意:电脑硬盘中只有文件/文件夹,两个方法互斥,使用时路径必须存在,否则都返回false
代码示意:
import java.io.File;
public class File04 {
public static void main(String[] args) {
method01();
method02();
}
/* public boolean exists():此File表示的文件或目录是否实际存在。 用于判断构造方法中的路径是否存在,返回true或者false */
private static void method01() {
File f1=new File("D:\\CODE\\DelaunayTIN(4)");
boolean exists = f1.exists();
System.out.println(exists);//true
File f2=new File("D:\\CODE\\DelaunayTIN");
boolean exists1 = f2.exists();
System.out.println(exists1);//false、
File f3=new File("File04.java");
boolean exists2 = f3.exists();
System.out.println(exists2);//true
}
/* public boolean isDirectory():此File表示的是否为目录。 用于判断构造方法中给定的路径是否以文件夹结尾 public boolean isFile():此File表示的是否为文件。 用于判断构造方法中给定的路径是否以文件结尾 注意:电脑硬盘中只有文件/文件夹,两个方法互斥,使用时路径必须存在,否则都返回false */
private static void method02(){
File f1=new File("D:\\文档\\04.02\\data");
boolean directory = f1.isDirectory();
System.out.println(directory);//true
System.out.println(f1.isFile());//false
File f2=new File("D:\\文档\\04.02\\data\\04.dbf");
System.out.println(f2.isFile());//true
System.out.println(f2.isDirectory());//false
}
}
4.3 创建删除功能的方法
public boolean createNewFile()
:当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
注意:
1.此方法只能创建文件,不能创建文件夹
2.创建文件的路径必须存在,否则抛出异常public boolean delete()
:删除由此File表示的文件或目录。
此方法可以删除构造方法路径中给出的文件/文件夹
注意:delete方法是直接在硬盘删除文件/文件夹,不走回收站,删除要谨慎public boolean mkdir()
:创建由此File表示的目录。
创建单级空文件夹
public boolean mkdirs()
:创建由此File表示的目录,包括任何必需但不存在的父目录。
既可创建单级空文件夹也可创建多级文件夹
代码示例:
import java.io.File;
import java.io.IOException;
public class File05 {
public static void main(String[] args) throws IOException {
//method01();
method02();
method03();
}
/* public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 */
private static void method01() throws IOException {
File f1=new File("D:\\文档\\04.02\\a.txt");
boolean newFile = f1.createNewFile();
System.out.println(newFile);//true
File f2=new File("rusell\\b.txt");
System.out.println(f2.createNewFile());//抛出异常
}
/* public boolean mkdir():创建由此File表示的目录。(创建单级空文件夹) public boolean mkdirs():创建由此File表示的目录,包括任何必需但不存在的父目录。(即可创建单级空文件夹也可创建多级文件夹) 返回值: 文件夹不存在,创建文件夹,返回true 文件夹存在,不会创建,返回false;构造方法中给出的路径不存在返回false 注意:此方法只能创建文件夹,不能创建文件 */
private static void method02(){
//单级空文件夹
File f1=new File("D:\\CODE\\1");
System.out.println(f1.mkdir());//true
//多级文件夹
File f2=new File("D:\\CODE\\a\\b\\c");
System.out.println(f2.mkdirs());//true
File f3=new File("C:\\CODE\\a\\b\\c");
System.out.println(f3.mkdir());//false
}
/* public boolean delete():删除由此File表示的文件或目录。 返回值: 文件/文件夹删除成功,返回true 文件夹中有内容,不会删除返回false,构造方法中路径不存在返回false */
private static void method03(){
//删除文件夹
File f1=new File("D:\\LDSGameMaster");
System.out.println(f1.delete());//false
File f2=new File("D:\\CODE\\1");
System.out.println(f2.delete());//true
//删除文件
File f3=new File("D:\\CODE\\a\\point.txt");
System.out.println(f3.delete());//true
}
}
5 目录的遍历
-
public String[] list()
:返回一个String数组,表示该File目录中的所有子文件或目录。 -
public File[] listFiles()
:返回一个File数组,表示该File目录中的所有的子文件或目录。
代码如下:
import java.io.File;
public class File06 {
public static void main(String[] args) {
method01();
}
private static void method01() {
File f1=new File("D:\\CODE");
String[] list1 = f1.list();
//遍历数组list1
for (String s : list1) {
System.out.println(s);
}
// System.out.println(list1);
File[] files = f1.listFiles();
for (File file : files) {
System.out.println(file);
}
//System.out.println(files);
}
}
运行结果:
list:
listFiles:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134294.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...