File类
file类的每一个实例可以表示硬盘中的一个文件或目录
使用文件可以做到:
访问其表示的文件目录的属性信息,但不能直接访问数据
创建和删除文件或目录
访问一个目录中的子项
获取文件及其属性
length(): 返回文件的长度, 单位是字节数(如果File是目录, 则返回0)
exists(): 判断当前文件或目录是否存在,存在则返回true
isFile(): 判断当前file是否为文件,是文件则返回true
isDirectory(): 判断当前file是否为目录,是目录返回true
getName(): 获取当前File文件或目录的名字
getParent(): 获取当前File父目录的路径
getAbsolutePath(): 获取当前File文件或目录的完整路径
下面代码是访问文件,获取文件名,获取文件长度大小案例
public class FileDemo {
public static void main(String[] args) {
//访问当前项目下,demo目录中的demo.txt文件
File file = new File("./demo/demo.txt");
//获取访问的文件的文件名
String name = file.getName();
System.out.println("名字:" + name);
//获取文件的长度(单位是字节)
long length = file.length();
System.out.println("文件长度:" + length + "个字节");
}
}
注意:文件创建中需要输入路径:
new File(String path)
path就是要访问的文件的路径
路径分为绝对路径和相对路径
绝对路径: 从盘符开始定位文件的路径,不建议使用,假如更换到linux系统,linux系统中是没有盘符的
相对路径: 相对项目而言的路径,可以使用"./"表示项目的路径,"./"可以省略
在路径中,可以使用反斜杠(\)表示不同目录的分隔符,但是反斜杠在java中有特殊意义,
是转义符号,两个反斜杠等于一个正斜杠(/)
创建一个新的文件的方法
createNewFile()方法: 创建指定路径和名称的文件, 如果文件不存在, 则创建并返回true, 否则就不创建并返回false
public class CreateNewFileDemo {
public static void main(String[] args) throws IOException {
//在当前项目下的demo目录下,创建一个新的文件test.txt
//相对路径下,"./"可以忽略不写,默认就是从"./"开始的
//File file = new File("./demo/test.txt");
File file = new File("demo/test.txt");
//判断当前File所表示的文件是否存在
/**
* boolean exists()
* 该方法是判断当前File对象是否存在,
* 如果存在,返回true,如果不存在,返回false
*/
if (file.exists()) {
System.out.println("文件已存在,不需要创建");
} else {
/**
* boolean createNewFile() 根据指定的路径和文件名,创建文件,如果创建,就返回true
* create 创建
* new 新的
* file 文件
*/
file.createNewFile();
System.out.println("文件不存在,创建完成!");
}
}
}
删除文件操作
delete()方法: 删除文件或删除空目录, 删除成功返回true只能删除空的目录(非空目录删除会失败)。
public class DeleteFile {
public static void main(String[] args) {
//删除当前项目下demo目录中的test.txt文件
File file = new File("demo/test.txt");
if (file.exists()) {
file.delete();
System.out.println("文件已删除");
} else {
System.out.println("文件不存在,不能删除");
}
}
}
创建目录
mkDir():创建当前File表示的目录
mikDirs():创建当前File表示的目录,同时将所有不存在的父目录一同创建
public class MKDirDemo {
public static void main(String[] args) {
//在demo目录下,创建一个新的目录,叫做dir
//目录是没有后缀的
File dir = new File("demo/dir/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z");
if (dir.exists()) {
System.out.println("该目录已存在");
} else {
/**
* boolean mkdir()
* 创建当前File指定的目录,要求要创建的目录所在的目录必须存在,否则不能创建
* mk make 制造
* dir directory目录
*/
//dir.mkdir();
/**
* boolean mkdirs()
* 创建当前File指定的目录,会自动将创建的目录所在的不存在的目录也一同创建
*/
dir.mkdirs();
System.out.println("目录不存在!已经创建");
}
}
}
删除目录
delete():删除文件或删除空目录, 删除成功返回true(非空目录删除会失败)
public class DeleteDirDemo {
public static void main(String[] args) {
//删除demo下的dir目录
File dir = new File("./demo/dir");
if (dir.exists()) {
//目录存在,则删除目录,但是需要注意!删除的目录必须是一个空目录
dir.delete();
System.out.println("该目录已删除!");
} else {
System.out.println("该目录不存在!");
}
}
}
获取目录中的子项
public class ListFilesDemo {
public static void main(String[] args) {
//获取demo目录下的子项
File dir = new File("./demo");
//对dir进行判断,判断其是否是一个目录,只有目录才有子项
/**
* boolean isDirectory() 判断当前File表示的是否是一个目录
* boolean isFile() 判断当前File表示的是否是一个文件
*/
if (dir.isDirectory()) {
/**
* File[] listFiles();
* 获取指定的File所表示的目录中的子项,并将每个子项声明为File实例,存储到File数组中
*/
File[] subs = dir.listFiles();
System.out.println("demo目录下存在" + subs.length + "个子项");
//subs.fori 快速生成遍历该数组的循环体
for (int i = 0; i < subs.length; i++) {
System.out.println(subs[i].getName());
}
}
}
}