File类:
File类代表一个特定的文件或者目录(文件夹),并提供了若干方法对该文件或目录进行操作。
File类构造方法:
常用的有三种:
1、File(String pathname):通过路径名创建一个新 File 实例。
2、File(File parent, String child):根据父目录路径File实例和子目录或文件路径创建一个新 File 实例。
3、File(String parent, String child) :根据父目录路径和子目录或文件路径创建一个新 File 实例。
import java.io.File;
public class Work {
public static void main(String[] args){
File file = new File("E:\\网易有道词典\\Youdao\\Dict\\guid.dat"); //第一种方式。
System.out.println(file.getPath()); //getPath()返回该file的路径。
file=new File(new File("E:\\网易有道词典\\Youdao"),"Dict\\guid.dat"); //第二种方式。
System.out.println(file.getPath());‘
file=new File("E:\\网易有道词典\\Youdao\\Dict","guid.dat"); //第三种方式。
System.out.println(file.getPath());
}
}
输出:
E:\网易有道词典\Youdao\Dict\guid.dat
E:\网易有道词典\Youdao\Dict\guid.dat
E:\网易有道词典\Youdao\Dict\guid.dat
File类常用方法:
1、isDirectory(): 判断此File对象代表的路径表示是不是文件夹,只有File对象代表路径存在且是一个目录时才返回true,否则返回false。
2、isFile():判断此File对象代表的路径是否是一个标准文件,只有File对代表路径存在且是一个标准文件时才返回true,否则返回false。
3、getPath():返回File对象所表示的字符串路径。
4、getName():返回此对象表示的文件或目录最后一级文件夹名称。
5、getParent():返回此File对象的父目录路径名;如果此路径名没有指定父目录,则返回 null。
6、getParentFile():返回File对象所在的父目录File实例;如果File对象没有父目录,则返回 null。
7、 renameTo():重新命名此File对象表示的文件,重命名成功返回true,否则返回false。
8、 mkdir():创建此File类对象指定的目录(文件夹),不包含父目录。创建成功回true,否则返回false。
9、 mkdirs():创建此File对象指定的目录,包括所有必需但不存在的父目录,创建成功返回true;否则返回false。注意,此操作失败时也可能已经成功地创建了一部分必需的父目录。
10、createNewFile():如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false;如果所创建文件所在目录不存在则创建失败并出现IOException异常。
11、exists():判断文件或目录是否存在。
12、delete():如果该对象表示一个目录,则该目录必须为空才能删除,文件或目录删除成功返回true,否则false。
public static void main(String[] args) throws IOException {
File f = new File("aa/bb/cc/a.txt");//未指定路径则在本类文件下创建
File p = f.getParentFile();//返回File实例,路径为去掉最后一层的路径
if (!p.exists()) p.mkdirs();//如果父级目录不存在,需要先用getParentFile()获取父级File
对象,用父级对象.mkdirs()可以递归创建全部的父级目录
if (!f.exists()) f.createNewFile(); //如果父级目录可达,可以直接用createNewFile()创
建文件,也可以用mkdir()来创建目录
System.out.println(f.getName());
System.out.println(f.getAbsolutePath());
System.out.println(f.getPath());
System.out.println(f.length());
String[] filenNames = p.list();
System.out.println(Arrays.toString(filenNames));
// File m=new File("m.txt");//果该对象表示一个目录,则该目录必须为空才能删除;
// m.createNewFile();// 文件或目录删除成功返回true,否则false。
// m.delete();
//
// f.delete();
System.out.println(f.getName());
File f1 = new File("aa/bb/cc/a1.txt");
f.renameTo(f1);//如果是在同一目录下是重命名;不同目录下是移动/剪切
结果如下:
public class Demo3_FileMethod {
/*
* A:重命名和删除功能
* public boolean renameTo(File dest):把文件重命名为指定的文件路径
* public boolean delete():删除文件或者文件夹
* B:重命名注意事项
* 如果路径名相同,就是改名。
* 如果路径名不同,就是改名并剪切。
* C:删除注意事项:
* Java中的删除不走回收站。
* 要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹
*/
public static void main(String[] args) {
//renameTo();
//delete()方法删除要小心,因为它不走回收站
File file1 = new File("yyy.txt");
System.out.println(file1.delete()); //true
File file2 = new File("aaa");
System.out.println(file2.delete()); //true
File file3 = new File("ccc"); //如果删除一个文件夹,那么文件夹必须是空的
System.out.println(file3.delete()); //false
}
private static void renameTo() {
//File file1 = new File("xxx.txt");
File file2 = new File("ooo.txt");
//System.out.println(file1.renameTo(file2));
File file3 = new File("D:\\XXX.txt");
System.out.println(file2.renameTo(file3));
}
}
补充:将一个路径下的所有文件都打印出来
public class TestFile {
public static void listFileNames(String path){
File f=new File(path);
if (!f.exists())
return;
System.out.println(path);
if (f.isFile()){
return;
}
File[] children=f.listFiles();
if (children==null||children.length==0){
return;
}
for (File f1:children){
listFileNames(f1.getPath());
}
}
public static void main(String[] args) throws IOException {
listFileNames("aa");
}
结果如下: