㈠ File类:用于描述文件系统中的一个文件或目录。
㈡ File类的功能:我们通过File可以获取文件或目录的名字,大小,修改日期等信息。但是不能对文件内容进行访问
① File.separator 是个常量,用于解决操作系统间目录分隔符之间的差异。
② 路径中的"."代表当前目录。
③ 构造方法:File(String path),根据给定的路径,创建File对象来描述这个文件或目录。
例如:
File file = new File("."+File.separator+"file.txt");
File file = new File("file.txt");// 不加 "." ,默认是在当前目录下
④ 重载构造方法:在指定目录中创建文件或目录
File file = new File(File dir,String name);
参数1:描述父目录(上级目录)的File对象
参数2:当前文件或目录的名字
㈢ File的常用方法
long length(); // 获取文件的大小 ,以字节为单位.
long lastModified(); // 获取文件的最后修改时间,毫秒值.
String getName(); // 获取文件或目录的名字.
String getPath(); // 获取当前文件或目录的相对路径,以字符串形式返回.
String getAbsolutePath(); // 获取当前文件或目录的绝对路径.
String getCanonicalPath(); // 获取操作系统标准的绝对路径,但是该方法需要我们捕获异常.
boolean exists(); // 判断当前File对象描述的文件或目录是否存在.
boolean isFile(); // 判断当前File对象描述的是否为一个文件.
boolean isDirectory(); // 判断当前File对象描述的是否为一个目录.
boolean canRead(); // 判断当前文件是否可读.
boolean canWrite(); // 判断当前文件是否可写.
㈣ 使用File创建文件或目录
① 创建目录需要注意的几个问题
1) 指定想要创建目录的位置以及目录名称,并创建对应的File对象
2) 创建前确保该目录是不存在的
3) 通过File对象创建它
4) 当我们创建该对象后,并不代表他描述的目录一定存在,这只是java的一个对象,在内存中存在的。是否在硬盘上存在,要进行判断。
② 创建文件或目录的方法
boolean mkdir():创建File描述的目录。
boolean createNewFile():创建File描述的文件
boolean mkdirs():创建目录,同时创建所有不存在的上级目录。在创建多级目录时,应选取使用mkdirs()方法,若在多级目录下创建文件,应先确保该文件所处的目录存在后,再创建文件。
㈤ 删除文件或目录
① 删除给定的File对象需要注意的几个问题
1) 要先判断它是一个文件还是目录,
2) 若是文件则可以直接删除,
3) 若是目录,则要先获取其所有子项,然后逐个删除后,再删除这个目录。
② 删除文件或目录的方法
boolean delete():删除文件或目录。删除目录时,要确保该目录下没有任何子项才可以成功删除目录。
㈥ 查看目录下的内容
String[] list():返回当前目录下子项的名字
File[] listFiles():获取当前目录下的所有子项,每一个子项用一个File对象描述,最终以数组形式返回。
File[] listFiles(FileFilter filter):重载的listFiles()方法,可以传入一个过滤器,用来返回当前目录下满足过滤器要求的所有子项。
㈦ File代码示例
① 给定一个File对象,若是目录,输出该目录下的所有子项,子项若是目录,同样递归输出其子项。按如下样式输出:
-src
--java
---XXX.java
public class FileShows {
public static void main(String[] args) {
File file = new File("src");
showsFile(file, 1);
}
public static void showsFile(File file, int i){//i 代表该方法被调用的次数,从0开始为第一次。
String str = "";
for(int j=0;j<i;j++){
str += "-";
}
System.out.println(str + file.getName());
i++;//方法调用一次,i自加1,下次调用时str增加一个“-”。
if(file.isDirectory()){
for(File sub : file.listFiles()){
showsFile(sub, i);
}
}
}
}
② 递归删除目录下的子目录
public class DeleteFile {
public static void main(String[] args) {
File dir = new File("."+File.separator+"a");
deleteFile(dir);
}
// 删除给定的文件或目录
public static void deleteFile(File file){
/**
* 要想删除给定的File对象,要先判断它是一个文件还是目录
* 若是文件,则可以直接删除,
* 若是目录,则要先获取其所有子项,然后逐个删除后,再删除这个目录
*/
//若是目录
if(file.isDirectory()){
//先删除所有子项
File[] subs = file.listFiles();
for(File sub : subs){
deleteFile(sub);
}
}
//删除当前file对象描述的文件或目录
file.delete();
}
}
③ 创建文件
public class FileMkDirDemo {
public static void main(String[] args) throws IOException {
/**
* 创建目录
* 1:指定想要创建目录的位置以及目录名称,并创建对应的File对象
* 2:创建前确保该目录是不存在的
* 3:通过File对象创建它
*/
//1
File dir = new File("."+File.separator+"mydir");
//2
if(!dir.exists()){
//3
dir.mkdir();
}
//输出目录路径
System.out.println(dir.getCanonicalPath());
/**
* 在mydir目录中创建文件test.txt,创建文件的步骤和创建目录步骤一致
*/
//1
File file =
new File("." + File.separator +"mydir" + File.separator +"test.txt");
/**
* 重载构造方法
* 在指定目录中创建文件或目录
* 参数1:描述父目录(上级目录)的File对象
* 参数2:当前文件或目录的名字
*/
// File file = new File(dir,"text.txt");
//2
if(!file.exists()){
//3
file.createNewFile();
}
System.out.println(file.getCanonicalPath());
/**
* 在当前目录下创建 a/b/c/d,多级目录
*/
File mdir = new File(
"." + File.separator +
"a" + File.separator +
"b" + File.separator +
"c" + File.separator +
"d");
if(!mdir.exists()){
//使用mkdir创建目录,必须保证上级目录要存在
// mdir.mkdir();
//mkdirs创建目录,会自动将不存在的上级目录创建出来
mdir.mkdirs();
}
System.out.println("目录创建完毕");
}
}