File是文件和目录路径名的抽象表示。(既可以表示文件也可以表示目录)
通过File New出来的并不是磁盘上真实的文件,如果磁盘上有这个文件,就会形成这个文件的映射,他可以操作磁盘上的这个文件或目录,如果磁盘上没有这个文件或目录,这个new出来的文件或者目录会存在堆中。所以,通过new关键字创建的File并不是磁盘上真实的文件或目录。
File类的静态属性
static String pathSeparator——与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
static char pathSeparatorChar——与系统有关的路径分隔符。
windows下是分号,Linux下是冒号
static String Separator——与系统有关的默认名称分隔符,它被表示为一个字符串。
static char SeparatorChar——与系统有关的默认名称分隔符。
windows下是 \,Linux下是 /
File的构造方法
File(File parent, String child)
从父抽象路径名和子路径名字符串创建新的 File实例。
File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
File(String parent, String child)
从父路径名字符串和子路径名字符串创建新的 File实例。
File(URI uri)
通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。
File 的主要方法的使用
关于文件属性的方法的使用
package cn.bzu.look.dao;
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file = new File("G:\\FileTest");
//文件是否可执行
System.out.println("文件是否可执行 "+file.canExecute());
//文件是否可读
System.out.println("文件是否可读 "+file.canRead());
//文件是否可写
System.out.println("文件是否可写 "+file.canWrite());
//得到文件的名称或者抽象路径
System.out.println("文件的名称或者抽象路径是 "+file.getName());
//得到文件的绝对路径名
System.out.println("文件的绝对路径名是 "+file.getAbsolutePath());
}
}
输出结果是:
文件是否可执行 true
文件是否可读 true
文件是否可写 true
文件的名称或者抽象路径是 FileTest
文件的绝对路径名是 G:\FileTest
注:相对路径是在项目的路径下查找,对本项目的路径而言的
对文件的一些操作的方法
boolean createNewFile()
当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
boolean delete()
删除由此抽象路径名表示的文件或目录。
//以下两个方法是得到父类的路径和父类的对象,注意区别
String getParent()
返回此抽象路径名的父 null的路径名字符串,如果此路径名未命名为父目录,则返回null。
File getParentFile()
返回此抽象路径名的父,或抽象路径名 null如果此路径名没有指定父目录。
String getPath()
将此抽象路径名转换为路径名字符串。
boolean isDirectory()
测试此抽象路径名表示的文件是否为目录。
boolean isFile()
测试此抽象路径名表示的文件是否为普通文件。
//以下两个方法是得到子类的路径和子类的对象,注意区别
String[] list()
返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
File[] listFiles()
返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
//注意mkdir()和mkdirs()区别
boolean mkdir()
创建由此抽象路径名命名的目录。
boolean mkdirs()
创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
下面用代码来实现以下
File file= new File("G:\\FileTest");
File file2 = new File("G:\\FileTest\\jiangheng.txt");
//创建新的文件
//这里有可能会出现异常,所以要捕获一下
boolean create = false;
try {
create = file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("文件是否创建成功"+create);
//创建目录,这个创建的父目录存在
File file3 = new File("G:\\FileTest\\hengheng");
boolean mkdir = file3.mkdir();
System.out.println("创建目录是否成功"+mkdir);
//创建父目录不存在的目录,利用mkdirs,注意区分
File file4 = new File("G:\\FileTest\\enen\\hengheng");
boolean mkdirs = file4.mkdirs();
System.out.println("创建目录是否成功"+mkdirs);
//删除文件或目录,删除目录是只能删除空的目录
File file5 = new File("G:\\FileTest\\hengheng");
boolean del = file5.delete();
System.out.println("删除文件是否成功"+mkdirs);
//得到父类的路径
String path = file4.getParent();
System.out.println("上一级路径是"+path);
//得到父类的对象
File file6 = file4.getParentFile();
System.out.println("父类对象的名称是"+file6.getName());
//得到子类的路径,这个得到是一个String的数组
String[] childPath= file.list();
System.out.println("目录下的子目录是");
for(String p : childPath) {
System.out.println(p);
}
//得到子目录的对象
File files[] = file.listFiles();
System.out.println("得到子目录的名字是");
for(File f : files) {
System.out.println(f.getName());
}
输出的结果是
文件是否创建成功true
================================
创建目录是否成功true
================================
创建目录是否成功true
================================
删除文件是否成功true
================================
上一级路径是G:\FileTest\enen
================================
父类对象的名称是enen
================================
目录下的子目录是
aaa
bbb
enen
fileTest.txt
jiangheng.txt
================================
得到子目录的名字是
aaa
bbb
enen
fileTest.txt
jiangheng.txt
List( ) 和 listFiles()方法的使用
//file类中方法的测试
public static void fileMethod() {
File file = new File("G:\\学习资料\\内网通");
//返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
String child[] = file.list();
for (String f : child) {
System.out.println(f);
}
System.out.println("*****************************");
//返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
File[] files = file.listFiles();//如果file是个文件,则返回的结果是个空,如果file是个空目录,则返回的是个空组数组
for (File fs : files) {
System.out.println(fs);
}
}
输出的结果是
IntelliJ IDEA使用gitee版本控制-改进版.docx
Orcale客户端安装plsqldev120
sqlscript20190828.sql
程序员必知的8大排序(值得一看).doc
程序员必知的8大排序.docx
老师的代码脚本
课堂笔记.txt.bak
*****************************
G:\学习资料\内网通\IntelliJ IDEA使用gitee版本控制-改进版.docx
G:\学习资料\内网通\Orcale客户端安装plsqldev120
G:\学习资料\内网通\sqlscript20190828.sql
G:\学习资料\内网通\程序员必知的8大排序(值得一看).doc
G:\学习资料\内网通\程序员必知的8大排序.docx
G:\学习资料\内网通\老师的代码脚本
G:\学习资料\内网通\课堂笔记.txt.bak
利用递归实现对文件的删除与遍历,请看下一篇博客
利用递归实现对文件的遍历与删除
https://blog.youkuaiyun.com/weixin_43610698/article/details/91656606