概述
(1) java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关
(2)File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。
(3) 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
(4) File对象可以作为参数传递给流的构造器,指明读取或写入的"终点"。
构造方法
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
// 文件路径名
String p1 = "D:\\a.txt";
File file1 = new File(p1);
// 文件路径名
String p2 = "D:\\A\\b.txt";
File file2 = new File(p2);
// 通过父路径和子路径字符串
String p3 = "d:\\A";
String c1 = "b.txt";
File file3 = new File(p3, child);
// 通过父级File对象和子路径字符串
File p4 = new File("d:\\A");
String c2 = "b.txt";
File file4 = new File(p4, c2);
常用方法
获取功能的方法getAbsolutePath() 获取绝对路径
gerPath() 获取相对路径
getName() 获取文件名,相当于调用了一个toString方法
length() 查看文件的字节数
public class FileGet {
public static void main(String[] args) {
File f = new File("d:/A/b.txt");
System.out.println("文件绝对路径:"+f.getAbsolutePath());
System.out.println("文件构造路径:"+f.getPath());
System.out.println("文件名称:"+f.getName());
System.out.println("文件长度:"+f.length()+"字节");
File f2 = new File("d:/aaa");
System.out.println("目录绝对路径:"+f2.getAbsolutePath());
System.out.println("目录构造路径:"+f2.getPath());
System.out.println("目录名称:"+f2.getName());
System.out.println("目录长度:"+f2.length());
}
}
输出结果:
文件绝对路径:d:\A\b.txt
文件构造路径:d:\A\b.txt
文件名称:b.txt
文件长度:413字节
目录绝对路径:d:\A
目录构造路径:d:\A
目录名称:A
目录长度:4471
绝对路径和相对路径
(1)绝对路径:是一个固定的路径,从盘符开始
(2)相对路径:是相对于某个位置开始
public class FilePath {
public static void main(String[] args) {
// D盘下的bbb.java文件
File f = new File("D:\\b.txt");
System.out.println(f.getAbsolutePath());
// 项目下的bbb.java文件
File f2 = new File("b.txt");
System.out.println(f2.getAbsolutePath());
}
}
输出结果:
D:\b.java
D:\A\b.java
判断功能的方法exists() 查询目录是否存在
isDirectory() 判断当前路径是否为目录
isFile() 判断是否是文件
public class FileIs {
public static void main(String[] args) {
File f1 = new File("d:\\A\\b.txt");
File f2 = new File("d:\\A");
// 判断是否存在
System.out.println("d:\\A\\b.txt是否存在:"+f1.exists());
System.out.println("d:\\A是否存在:"+f2.exists());
// 判断是文件还是目录
System.out.println("d:\\A文件?:"+f2.isFile());
System.out.println("d:\\A目录?:"+f2.isDirectory());
}
}
输出结果:
d:\A\b.txt是否存在: true
d:\A是否存在: true
d:\A文件?: false
d:\A目录?: true
创建删除功能的方法
createNewFile():创建新文件当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
delate():删除由此File表示的文件或目录。
mkdir() :创建由此File表示的目录。
mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
public class FileCreateDelete {
public static void main(String[] args) throws IOException {
// 文件的创建
File f1 = new File("ac.txt");
System.out.println("是否存在:"+f1.exists()); // false
System.out.println("是否创建:"+f1.createNewFile()); // true
System.out.println("是否存在:"+f1.exists()); // true
// 目录的创建
File f2= new File("ABC");
System.out.println("是否存在:"+f2.exists());// false
System.out.println("是否创建:"+f2.mkdir()); // true
System.out.println("是否存在:"+f2.exists());// true
// 创建多级目录
File f3= new File("ABC\\ABB");
System.out.println(f3.mkdir());// false
File f4= new File("ABC\\ABB");
System.out.println(f4.mkdirs());// true
// 文件的删除
System.out.println(f1.delete());// true
// 目录的删除
System.out.println(f2.delete());// true
System.out.println(f4.delete());// false
}
}
目录的遍历
public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录
public class FileFor {
public static void main(String[] args) {
File dir = new File("d:\\AA");
//获取当前目录下的文件以及文件夹的名称。
String[] names = dir.list();
for(String name : names){
System.out.println(name);
}
//获取当前目录下的文件以及文件夹对象,只要拿到了文件对象,那么就可以获取更多信息
File[] files = dir.listFiles();
for (File file : files) {
System.out.println(file);
}
}
}