一、File类的使用
1、File类的构造器
1、路径分隔符
windows:\\
unix||linux:/
2、相对路径:相对于当前路径下。
绝对路径: 任何位置都可通过绝对路径正确地找到文件
3、如何创建File类的实例
File(String filePath)
File(String parentPath,String childPath) File(File parentFile,String childPath)
@Testpublic void test(){
//构造器1
File file = new File("hello.txt");//相对于module
File file1 = newFile("D:\\java2112\\hi.txt");//绝对路径
System.out.println(file1); System.out.println(file);
//构造器2
File file2 = new File("D:\\java2112", "hehe.txt");
System.out.println(file2);
//构造器三
File file3 = new File(file, "ha.txt"); System.out.println(file3);
2、File类的方法
(1)File类的获取功能:
public String getAbsolutePath():获取绝对路径
public String getPath() :获取路径
public String getName() :获取名称
public String getParent():获取上层文件目录路径。若无,返回null
public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
public long lastModified() :获取最后一次的修改时间,毫秒值
*** 如下的两个方法适用于文件目录:
public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
public boolean renameTo(File dest):把文件重命名为指定的文件路径
要想保证返回true,需要file在硬盘中是存在的,且file1不能在硬盘中存在。
(2) File的判断功能:
public boolean isDirectory():判断是否是文件目录
public boolean isFile() :判断是否是文件
public boolean exists() :判断是否存在
public boolean canRead() :判断是否可读
public boolean canWrite() :判断是否可写
public boolean isHidden() :判断是否隐藏
(3) File类的创建功能
public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。
如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建
注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目路径下。
(4)File类的删除功能
public boolean delete():删除文件或者文件夹
删除注意事项:Java中的删除不走回收站。要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录
File file = new File("hello.txt");
File file1 = new File("D:\\java2112");
System.out.println("获取绝对路径"+file.getAbsolutePath());
System.out.println("获取文件路径"+file1.getPath());
System.out.println("获取文件名称"+file.getName());
System.out.println("获取上一层文件目录"+file.getParent());
System.out.println("获取上一层文件目录"+file1.getParent());
System.out.println("获取文件长度"+file1.length());
System.out.println("获取文件最后修改时间"+file1.lastModified());
String[] list = file1.list(); //得到当前文件夹下的文件或者文件夹
System.out.println(Arrays.toString(list));
File[] files = file1.listFiles();//得到当前文件夹下的文件或者文件夹,带盘的
System.out.println(Arrays.toString(files));
File file=new File("hello.txt");
System.out.println(file.isDirectory());
System.out.println(file.isFile());
File file1 = new File("C:\\Users\\19358\\Desktop\\aa.txt");
//绝对路径
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file.exists());
System.out.println(file1.exists());
System.out.println(file1.canRead());
System.out.println(file1.canWrite());
System.out.println(file1.isHidden());
public void Test3(){//通过递归调用来删除指定文件夹下全部规定的后缀名文件(方式1)
File chen=new File("/Users/chen/Desktop/图/tupian");
File[] files = chen.listFiles(new FilenameFilter() {
@Override//重写官方提供的过滤器
public boolean accept(File dir, String name) {
return name.endsWith(".jpg");
}
});
for (File f:files) {
System.out.println(f.getAbsolutePath());
}}
-----------------------------------------------------------------
@Test//通过递归调用来删除指定文件夹下全部规定的后缀名文件(方式2)
public static void digui(File file){
File file=new File("/*");
File[] files=file.listFiles();//将当前目录赋值给File类型的数组
for (File c:files) {
if (c.isDirectory()){//判断,若当前路径是目录,则递归调用自身,继续查找
digui(c);
}else {//当此路径不是目录而是文件名时,输出文件名
System.out.println(c.getAbsolutePath());
}}}