Java File类
概述
- java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关
- File能新建、删除、重命名文件和目录,但不能访问文件内容本身,访问文件内容本身,需要使用输入/输出流
- 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个对象,可能没有一个真实存在的文件或目录
- File对象可以作为参数传递给流的构造器
常用构造器
- public File(String pathname)
package www.bh.c.filetest;
import java.io.File;
public class Test1 {
public static void main(String[] args) {
File file1 = new File("hello.txt");//相对路径
File file2 = new File("E:\\Test\\calss\\he.txt");//绝对路径
}
}
- public File(String parent,String child):以parent为父路径,child为子路径创建File对象
package www.bh.c.filetest;
import java.io.File;
public class Test1 {
public static void main(String[] args) {
File file = new File("E:\\Test\\calss", "java");
System.out.println(file);//E:\Test\calss\java
}
}
- public File(File parent,String child):根据一个父File对象和子文件夹路径创建File对象
package www.bh.c.filetest;
import java.io.File;
public class Test1 {
public static void main(String[] args) {
File file = new File("E:\\Test\\calss", "java");
System.out.println(file);
File file1 = new File(file, "hi.txt");
System.out.println(file1);//E:\Test\calss\java\hi.txt
}
}
路径
- 绝对路径:是一个固定的路径,从盘符开始
- 相对路径:是相对于某个位置开始的
- 路径分隔符:windows和DOS系统默认使用“\”来表示,UNIX和URL使用“/”来表示
- Java中File类提供了一个常量:separator
package www.bh.c.filetest;
import java.io.File;
public class Test1 {
public static void main(String[] args) {
File file1 = new File("hello.txt");
File file2 = new File("E:\\Test\\calss\\he.txt");
File file3 = new File("E:"+File.separator+"Test"+File.separator+"calss"+File.separator+"he.txt");
}
}
常用方法
-
File类的获取功能
- public String getAbsolutePath():获取绝对路径
- public String getPath():获取路径
- public String getName():获取名称
- public String getParent():获取上层文件目录路径,若无,返回null
- public long length():获取文件长度(即:字节数);不能获取目录的长度
- public long lastModified():获取最后一次的修改时间,毫秒值
package www.bh.c.filetest; import java.io.File; import java.util.Date; public class Test1 { public static void main(String[] args) { File file = new File("hello.txt"); File file1 = new File("E:\\Test\\calss\\hi.txt"); System.out.println(file.getAbsolutePath());//E:\Test\hello.txt(和项目在同一个路径下) System.out.println(file.getPath());//hello.txt System.out.println(file.getName());//hello.txt System.out.println(file.getParent());//null System.out.println(file.length());//0 System.out.println(file.lastModified());//0 System.out.println("===================="); System.out.println(file1.getAbsolutePath());//E:\Test\calss\hi.txt System.out.println(file1.getPath());//E:\Test\calss\hi.txt System.out.println(file1.getName());//hi.txt System.out.println(file1.getParent());//E:\Test\calss System.out.println(file1.length());//0 System.out.println(new Date(file1.lastModified()));//Thu Jan 01 08:00:00 CST 1970 } }
- public String[] list():获取指定目录下的所有文件或者文件目录的名称数组
package www.bh.c.filetest; import java.io.File; public class Test2 { public static void main(String[] args) { File file = new File("E:\\Test\\calss\\src\\www\\bh\\c"); String[] list = file.list(); for (String s:list){ System.out.println(s); } } }
- public File[] listFiles():获取指定目录下的所有文件或者文件目录的File数组
package www.bh.c.filetest; import java.io.File; public class Test2 { public static void main(String[] args) { File file = new File("E:\\Test\\calss\\src\\www\\bh\\c"); File[] files = file.listFiles(); for (File f:files){ System.out.println(f); } } }
-
File类的重命名功能
- public boolean renameTo(File dest):把文件重命名为指定的文件路径
package www.bh.c.filetest;
import java.io.File;
//file.renameTo(file2)中:需要返回true时,需要file在硬盘中是存在的,且file1不能再硬盘中存在
public class Test3 {
public static void main(String[] args) {
File file = new File("hello.txt");
File file1 = new File("E:\\Test\\calss\\hi.txt");
boolean b = file.renameTo(file);
System.out.println(b);
}
}
- File类的判断功能
- public boolean isDirectory():判断是否是文件目录
- public boolean isFile():判断是否是文件
- public boolean exists():判断是否存在
- public boolean canRead():判断是否可读
- public boolean canWrite():判断是否可写
- public boolean isHidden():判断是否隐藏
package www.bh.c.filetest;
import java.io.File;
public class Test3 {
public static void main(String[] args) {
File file = new File("hello.txt");
File file1 = new File("E:\\Test\\calss\\hi.txt");
System.out.println(file.isDirectory());//false
System.out.println(file.isFile());//true
System.out.println(file.exists());//true
System.out.println(file.canRead());//true
System.out.println(file.canWrite());//true
System.out.println(file.isHidden());//false
}
}
package www.bh.c.filetest;
import java.io.File;
public class Test3 {
public static void main(String[] args) {
File file = new File("hello.txt");
file=new File("hello1.txt");
System.out.println(file.isDirectory());//false
System.out.println(file.isFile());//false
System.out.println(file.exists());//false
System.out.println(file.canRead());//false
System.out.println(file.canWrite());//false
System.out.println(file.isHidden());//false
}
}
-
File类的创建功能
- public boolean createNewFile():创建文件,若文件存在,则不创建,返回false
package www.bh.c.filetest; import java.io.File; import java.io.IOException; public class Test4 { public static void main(String[] args) throws IOException { File file = new File("hello.txt"); if (!file.exists()){ //文件不存在 file.createNewFile(); System.out.println("创建成功"); }else { //文件存在 file.delete(); System.out.println("删除成功"); } } }
-
public boolean mkdir():创建文件目录,如果此目录存在,则不创建;如果此目录的上层目录不存在,也不创建
-
public boolean mkdirs():创建文件目录,如果上层文件目录不存在,则一并创建
-
如果在创建文件或者文件目录时没有写盘符路径,那默认在项目路径下
package www.bh.c.filetest; import java.io.File; public class Test5 { public static void main(String[] args) { File file = new File("E:\\Test\\calss\\he"); boolean mkdir = file.mkdir(); if (mkdir){ System.out.println("创建成功"); } System.out.println("============="); File file1 = new File("E:\\Test\\calss\\she"); boolean mkdir1 = file1.mkdir(); if (mkdir1){ System.out.println("创建成功"); } } }
-
File类的删除功能
- public boolean delete():删除文件或者文件夹
- 删除一个文件目录,需要该文件目录内不包含文件或者文件目录
-
总结:
- File类的一个对象,代表一个文件或一个文件目录(即:文件夹)
- File类声明在java.io包下
- File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作,如果需要读取或写入文件内容,须使用IO流来完成
- 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的“终点”