file可以表示硬盘上的一个文件或目录(本质上保存的是一个抽象路径)
file可以:
1.访问其表示的文件或目录的属性
2.创建删除文件或空目录
3.访问一个目录中的子项
file不可以访问文件数据
绝对路径的优点是清晰明了,但是缺点是路径写死了,跨平台不好运行
相对路径的优点是有良好的跨平台性
“./”是当前目录,在idea中当前目录指的是当前程序所在的项目目录
File file1 =new File("C:/Users/tedu/IdeaProjects/JSD2206_SE");
File file= new File("./demo.txt"); // 当前目录./
获取file表示的文件或目录的名字
String name=file.getName();
System.out.println(name);
获取当前file表示的文件的大小(单位是字节)
long len=file.length();
System.out.println("大小"+len+"个字节");
boolean cw =file.canWrite(); //是否可写
boolean cr =file.canRead(); //是否可读
System.out.println("是否可写"+cw);
System.out.println("是否可写"+cr);
在目录下新建100个文件,命名为:test1.txt-----test100.txt
for (int i=1;i<=100;i++){
File file =new File("./test"+i+".txt");
//判断该位置下是否已经存在了这个文件或者目录
/*
file.exists()判断当前file表示的目录或者文件是否存在,存在则返回true
*/
if(file.exists()) {
System.out.println("文件已被创建");
}else{
//将该文件创建出来
/*
.createNewFile()方法的作用是将当前file表示的文件在当前目录下创建出来
*/
final boolean newFile = file.createNewFile();
System.out.println("文件已创建");
}
}
for (int i=1;i<=100;i++){
File file =new File("test"+i+".txt");
if(file.exists()){
/*
file.delete();作用就是将当前file表示的文件删除
*/
file.delete();
System.out.println("该文件已删除!");
}else{
System.out.println("该文件不存在!");
}
}
获取./src/file目录中所有名字以D开始的文件
File file =new File("./src/file");
if(file.isDirectory()){
FileFilter filter =new FileFilter() {
@Override
public boolean accept(File file) {
//只要file表示的文件的名字的是以D开始的则接受
String name =file.getName();
return name.startsWith("D"); //以D开头,判断以括号内元素开头的元素的方法startsWith("D")
}
};
File[] subs =file.listFiles(filter);
for(int i=0;i<subs.length;i++){
System.out.println(subs[i].getName());
}
}
获取一个目录中的所有子项
获取当前目录下的所有子项
File dir =new File(".");
boolean isFile();
判断当前dir表示的是否为一个文件
boolean isDirectory();
判断当前dir表示的是否为一个目录
if(dir.isDirectory()){ //判断当前dir表示的是否为一个目录
dir.listFiles(); 将当前file对象表示的目录中的所有子项返回
File[] subs =dir.listFiles();
System.out.println("当前目录下共:"+subs.length+"个子项");
for (int i=0;i<subs.length;i++){
File sub =subs[i];
System.out.println(sub.getName());
}
}
重载的listfiles方法
Files[] listFiles(FileFilter filter)
该方法允许我们传入一个文件过滤器,然后将当前file对象保安室的目录中的所有符合条件的子项返回
获取./src/file目录中所有名字中含有t的文件
File dir =new File("./src/file");
if(dir.isDirectory()){
//使用匿名内部类创建一个文件过滤器
FileFilter filter = new FileFilter() {
@Override
/*
重写accept方法
此方法得重写原则是定义过滤器File的条件,当参数file符合此过滤器的过滤条件时,方法应当返回为true,表达过滤器接受该file
*/
public boolean accept(File file) {
String name =file.getName();
return name.contains("t"); //name.contains("t")方法查看是否包含括号中的内容
}
};
File[] subs =dir.listFiles(filter);
for(int i=0;i<subs.length;i++){
System.out.println(subs[i].getName());
}
}
新建一个目录
在当前项目目录下新建一个文件:test.txt
创建一个File表示要创建的文件
File file =new File("./test.txt");
判断该位置下是否已经存在了这个文件或者目录
file.exists()判断当前file表示的目录或者文件是否存在,存在则返回true
if(file.exists()) {
System.out.println("文件已被创建");
}else{
//将该文件创建出来
/*
.createNewFile()方法的作用是将当前file表示的文件在当前目录下创建出来
*/
file.createNewFile(); //alt+回车把错误抛出去
System.out.println("文件已创建");
}
在当前目录下新建目录:
File dir=new File("./a/b/c/d/e/f");
if(dir.exists()) {
System.out.println("该目录已被创建");
}else{
dir.mkdirs(); //把不存在的所有目录都搞出来,普遍使用,限制少
System.out.println("该目录已创建");
}
在当前目录下新建一个目录:demo
File dir=new File("demo");
默认等于File dir=new File("./demo");
if(dir.exists()) {
System.out.println("该目录已被创建");
}else{
dir.mkdir();
System.out.println("该目录已创建");
}
删除一个目录
删除当前目录下的Demo目录
File dir =new File("./demo");
if(dir.exists()){
/*
在delete()应该访问的是空目录,否则删不掉
*/
dir.delete();
System.out.println("该目录已删除");
}else {
System.out.println("该目录不存在");
}
}
删除当前目录下的test.txt文件
创建一个File表示要删除的文件
在相对路径中,“./”可以忽略不写,默认就是从./开始
File file =new File("text.txt");
if(file.exists()){
/*
file.delete();作用就是将当前file表示的文件删除
*/
file.delete();
System.out.println("该文件已删除!");
}else{
System.out.println("该文件不存在!");
}
}