@我是金子
欢迎批评指正
File
最近重新系统的学习了JavaSE。今天先来简单分享一下自己对File的一个理解。
File类简介
1.File类其实就是对文件或者目录名的一个抽象表示。
2.何为抽象表示?
可以分两点解释:①就是说文件或者目录是可以通过File封装成对象的。
②对于File而言,封装的并不是一个真正存在的文件,仅仅是一个路径名而已。这个被封装起来的文件或者目录,它可以存在,也可以不存在。将来我们是要通过File类中的具体方法进行操作,将这个路径名称转换成具体存在的文件或者文件夹。
File的构造方法(指向一个文件)
1.File(String name):通过指定路径名字符串转换为抽象路径来创建一个File实例。
2.File(String parent,String child):从父路径名字和子路径名字符串创建新的File实例。
3.File(File parent,String child):从父抽象路径名和子路径名字符串创建新的File实例。
下面对以上三种构造方法依次介绍:
package com.zx.demo01;
import java.io.File;
/**
* File:文件和目录路径的抽象表示
* ①文件和目录是可以通过File封装成对象的
* ②File而言,它封装的并不是一个真正存在的文件,仅仅是一个路径名而已,它可以是存在的,也可以不存在,将来要通过具体的操作来将路径内容转换成具体存在的
*
* 构造方法(指向一个文件):
* File(String pathname):通过指定的路径名字符串转换为抽象路径来创建新的File实例
* File(String parent,String child):从父路径名字和子路径名字字符串创建新的File实体
* File(File parent,String child):从父抽象路径名和子路经字符串创建新的File实例
*/
public class FileDemo01 {
public static void main(String[] args) {
//File(String pathname):通过指定的路径名字符串转换为抽象路径来创建新的File实例
File f1 = new File("D:\\zxTest\\java.txt");
System.out.println("f1:----"+f1);//file类重写了tostring方法
// File(String parent,String child):从父路径名字和子路径名字字符串创建新的File实体
File f2 = new File("D:\\zxTest","java2.txt");
System.out.println("f2:----"+f2);
//File(File parent,String child):从父抽象路径名和子路经字符串创建新的File实例
File f = new File("D:\\zxTest");
File f3 = new File(f,"java3.txt");
System.out.println("f3:----"+f3);
}
}
执行结果如下:
File类的创建功能
1.public boolean createNewFile():当具有该名称的文件不存在时,创建一个由该抽象路径名的心得空的新空文件夹
2.public boolean mkdir():创建由此抽象路径命名的目录
3.public boolean mkdirs():创建多级目录
注意:
-
如果不存在,创建文件,返回TRUE
-
如果已存在,不创建,返回FALSE
-
即使是一个目录、一个文件,如果重名了,也是存在,就不会重新创建了
package com.zx.demo01;
import java.io.File;
import java.io.IOException;
/**
* File类的创建功能
* public boolean createNewFile():当具有该名称的文件不存在时,创建一个由该抽象路径名的心得空的新空文件夹
* 如果不存在,创建文件,返回TRUE
* 如果存在,不创建,返回FALSE
* 即使是一个目录、一个文件,如果重名了,也是存在,就不会重新创建了
* public boolean mkdir():创建由此抽象路径命名的目录
* public boolean mkdirs():创建多级目录
*/
public class FileDemo02 {
public static void main(String[] args) throws IOException {
//需求1.在D:\\zxTest目录下创建一个文件Java.txt
File f1 = new File("D:\\zxTest\\java.txt");
boolean newFile = f1.createNewFile();
System.out.println(newFile);
//需求2:在D:\\zxTest目录下创建一个文件夹Javase
File f2= new File("D:\\zxTest\\javaSE");
boolean mkdir = f2.mkdir();
System.out.println(mkdir);
//3.在D:\\zxTest目录下创建多级目录JavaWEB\\HTML
File f3 = new File("D:\\zxTest\\javaWEB\\HTML");
boolean mkdirs = f3.mkdirs();
System.out.println(mkdirs);
}
}
可以执行以下看一下各个方法的返回值情况。同时本地也会有相应的目录和文件创建。
File类的获取和判断功能
- public boolean isDirectory()判断抽象路径名表示的file是否是目录
- public boolean isFile()测试此抽象路径名表示的file是否为文件
- public boolean exits()判断是否存在
- public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
- public String getPath()将此抽象路径名表示的文件或目录
- public String getName()返回此抽象file表示的文件或者目录名称
- public String[] list()返回此抽象路径名表示的目录中文件和目录的名称字符串数组
- public File[] listFiles()返回此抽象路径名表示的目录文件中的文件和目录的file对象数组
package com.zx.demo01;
import java.io.File;
/**
* file类判断和获取功能
* 方法名
* public boolean isDirectory()判断抽象路径名表示的file是否是目录
* public boolean isFile()测试此抽象路径名表示的file是否为文件
* public boolean exits()判断是否存在
* public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
* public String getPath()将此抽象路径名表示的文件或目录
* public String getName()返回此抽象file表示的文件或者目录名称
* public String[] list()返回此抽象路径名表示的目录中文件和目录的名称字符串数组
* public File[] listFiles()返回此抽象路径名表示的目录文件中的文件和目录的file对象数组
*/
public class FileDemo03 {
public static void main(String[] args) {
File f = new File("zxTest\\java.txt");
boolean directory = f.isDirectory();
boolean file = f.isFile();
boolean exists = f.exists();
File absoluteFile = f.getAbsoluteFile();
String absolutePath = f.getAbsolutePath();
System.out.println(absoluteFile);
System.out.println(absolutePath);
System.out.println(f.getPath());
System.out.println(f.getParent());
System.out.println(f.getName());
System.out.println("---------------");
File f1 = new File("D:\\zxTest");
String[] list = f1.list();
for (String str:list){
System.out.println(str);
}
System.out.println("---------");
File[] files = f1.listFiles();
for (File fn:files){
System.out.println(fn.getName());
if (fn.isFile()){
System.out.println("--------");
System.out.println(fn.getName());
}
}
System.out.println("---------");
for (File fs :files){
System.out.println(fs);
}
}
}
File类的删除
-
public boolean delete():删除文件或者目录
- 绝对路径和相对路径:
-
绝对路径:完整的路径名,不需要其他任何信息就可以定位它所表示的文件
-
相对路径:必须使用取自其他路径名的信息进行解释。
package com.zx.demo01;
import java.io.File;
import java.io.IOException;
/**
* file类的删除功能
* public boolean delete():删除文件或者目录
* 绝对路径和相对路径:
* 绝对路径:完整的路径名,不需要其他任何信息就可以定位它所表示的文件
* 相对路径:必须使用取自其他路径名的信息进行解释。
*/
public class FileDemo04 {
public static void main(String[] args) throws IOException {
File f = new File("D:\\zxTest\\java.txt");//绝对路径
File f1 = new File("java.txt");//如果不标注创建文件到哪里,会创建在和项目同级下;
File f2 = new File("MyFile\\java.txt");//相对路径//创建在了MyFile模块
File f3 = new File("aaa\\java.txt");//java.io.IOException: 系统找不到指定的路径。
boolean newFile = f1.createNewFile();
boolean newFile1 = f2.createNewFile();
// boolean newFile2 = f3.createNewFile();
System.out.println(newFile);
System.out.println(newFile1);
// System.out.println(newFile2);
boolean delete = f1.delete();
System.out.println(delete);
System.out.println("==============");
//删除当前目录下的文件
File f4 = new File("newDir");
boolean mkdir = f4.mkdir();
System.out.println(mkdir);
File f5 = new File(f4,"java.txt");
boolean newFile2 = f5.createNewFile();
System.out.println(newFile2);
boolean delete1 = f4.delete();
System.out.println(delete1);//目录下有内容,不能直接删除,不报错,但是没有删除效果
//需要先删除里面的内容
boolean delete2 = f5.delete();
System.out.println(delete2);
}
}
总结
File
1.在java.io下,使用时需要导包
2.File:文件和目录名的抽象表示
①文件和目录是可以通过File封装成对象的
②对于file而言,封装的并不是一个真正存在的文件,仅仅是一个路径名而已。
它可以是存在的,也可以是不存在的。
将来是要通过具体的操作吧这个路径的内容转换为具体存在的。
3.构造方法(指向一个文件):
- File(String pathname):通过指定的路径名字符串转换为抽象路径来创建新的File实例
- File(String parent,String child):从父路径名字和子路径名字字符串创建新的File实体
- File(File parent,String child):从父抽象路径名和子路经字符串创建新的File实例
4.File类的创建功能
- public boolean createNewFile():当具有该名称的文件不存在时,创建一个由该抽象路径名的心得空的新空文件夹
-
如果不存在,创建文件,返回TRUE
-
如果存在,不创建,返回FALSE
-
即使是一个目录、一个文件,如果重名了,也是存在,就不会重新创建了
- public boolean mkdir():创建由此抽象路径命名的目录
- public boolean mkdirs():创建多级目录
5.file类判断和获取功能
- 方法名
- public boolean isDirectory()判断抽象路径名表示的file是否是目录
- public boolean isFile()测试此抽象路径名表示的file是否为文件
- public boolean exits()判断是否存在
- public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
- public String getPath()将此抽象路径名表示的文件或目录
- public String getName()返回此抽象file表示的文件或者目录名称
- public String[] list()返回此抽象路径名表示的目录中文件和目录的名称字符串数组
- public File[] listFiles()返回此抽象路径名表示的目录文件中的文件和目录的file对象数组
6.相对路径和绝对路径:
绝对路径:完整路径,不需要其他任何信息就可以定位文件或文件夹的所在位置。
相对路径:必须使用取自其他路径名的信息进行解释,如果其他路径名不存在,那么会编译通过,运行报错。
7.File的删除功能:
File f = new File(“路径”);
f.createNewFile();
f.delete();
注意:如果要删除目录,如果目录下有内容,应该先删除目录下的内容,否则编译通过,执行通过,但是返回FALSE,删除不了。
拜拜~