java.io.File
File用于表示硬盘上的一个文件或目录(实际上表示的是一个抽象路径)
使用File可以:
- 访问其表示的文件或目录的属性(名字、大小、权限等)
- 创建,删除文件或目录
- 访问一个目录中的子项
* 但是File不能访问文件数据
* File是没有无参构造的,里面必须传入参数,参数是字符串类型,里面传的是文件所在的路径,我们在写程序时,需要指定路径时通常使用相对路径,虽然看起来模糊,但是他有更好的跨平台性,"./"在相对目录中的意思是"当前目录",这个目录具体指哪里要视当前程序而定,对于idea和eclipse而言,当前目录指定的是当前程序所在的项目目录
* 绝对路径:根目录开始,不利于跨平台
* 相对路径:./ 开始,相对路径有良好的跨平台性,在写相对路径的时候,./可以省略,.表示当前目录,./表示当前目录下
访问其表示的文件或目录的属性(名字、大小、权限等)代码演示
package file;
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
/*
写程序时,需要指定路径时通常使用相对路径,虽然看起来模糊,但是他有更好的跨平台性,
"./"在相对目录中的意思是"当前目录",这个目录具体指哪里要视当前程序而定
对于IDEA和eclipse而言,当前目录指定的是当前程序所在的项目目录
*/
File file=new File("./demo.txt");
//获取文件的名字
String name=file.getName();
System.out.println("名字:"+name);
//获取文件的大小,单位是字节
long length=file.length();
System.out.println("大小:"+length+"字节");
//是否可读
boolean cr=file.canRead();
System.out.println("可读"+cr);
//是否可写
boolean cw=file.canWrite();
System.out.println("可写"+cw);
//是否隐藏
boolean ih=file.isHidden();
System.out.println("是否隐藏"+ih);
}
}
创建文件代码演示:createNewFile()
package file;
import java.io.File;
import java.io.IOException;
public class CreateNewFileDemo {
public static void main(String[] args) throws IOException {
/*
在当前目录下新建一个文件:test.txt
*/
//在相对路径中"./"可以忽略不写,默认就是在当å前目录下
File file=new File("./test.txt");
if (file.exists()){
System.out.println("该文件已存在");
}else {
file.createNewFile();
System.out.println("该文件已创建");
}
}
}
删除文件代码演示:delete()
package file;
import java.io.File;
public class DeleteFileDemo {
public static void main(String[] args) {
//将当前目录下的test.txt文件删除
File file=new File("test.txt");
if (file.exists()){
file.delete();
System.out.println("该文件已删除");
}else {
System.out.println("该文件不存在");
}
}
}
创建目录代码演示:mkdir()/mkdirs()
package file;
import java.io.File;
public class MKDirDemo {
public static void main(String[] args) {
//File dir=new File("demo");
File dir=new File("a/b/c/d");
if(dir.exists()){
System.out.println("该目录已存在");
}else {
dir.mkdir();
//mkdir要求创建的目录所在的目录必须存在
dir.mkdirs();
//mkdirs则会将不存在的父目录一同创建出来,使用更灵活
System.out.println("该目录已创建");
}
}
}
删除目录代码演示:delete
delete删除目录时有一个前提条件:目录必须是空的才可以删除
package file;
import java.io.File;
public class DeleteDirDemo {
public static void main(String[] args) {
//删除demo目录
File dir=new File("demo");
if(dir.exists()){
dir.delete();
//delete删除目录时有一个前提条件:目录必须是空的才可以删除
System.out.println("该目录已删除");
}else {
System.out.println("该目录不存在");
}
}
}
获取一个目录中的所有子项:listFiles()
获取该目录中的所有子项,每个子项都是以一个File实例形式保存在数组中并将该数组返回
package file;
import java.io.File;
/**
* 获取一个目录中的所有子项
*/
public class ListFilesDemo {
public static void main(String[] args) {
//获取当前目录下的所有内容
File dir = new File(".");
/*
boolean isFile() 判断当前File表示的是否为一个文件
boolean isDirectory() 判断当前File表示的是否为一个目录
*/
if(dir.isDirectory()){
/*
File[] listFiles()
获取该目录中的所有子项,每个子项都是以一个File实例形式保存在数组中并将该
数组返回。
*/
File[] subs = dir.listFiles();
System.out.println(subs.length);
for(int i=0;i<subs.length;i++){
System.out.println(subs[i].getName());
}
}
}
}
listFiles()还提供了一个重载的方法:File[ ] listFiles(File Filter filter)
获取该目录中满足给定过滤器要求的所有子项
package file;
import java.io.File;
import java.io.FileFilter;
/**
* 有条件的获取一个目录中的部分子项
*
* 重载的方法:
* File[] listFiles(File Filter filter)
* 获取该目录中满足给定过滤器要求的所有子项
*/
public class ListFilesDemo2 {
public static void main(String[] args) {
if (dir.isDirectory()){
//创建匿名内部类
// FileFilter filter=new FileFilter() {
// @Override
// public boolean accept(File file) {
// return file.getName().endsWith(".txt");
// }
// };
File[] subs=dir.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.getName().endsWith(".txt");
}
});
File[] subs=dir.listFiles(filetr);
System.out.println(subs.length);
}
}
}