File类
本节目标:
1.掌握File类的作用
2.能够使用File类中的方法对文件进行操作
1.File类
在整个java.io包中,唯一与文件本身有关的类就是File类。使用File类可以进行创建或删除文件等操作。要想使用File类,首先要掌握File类的构造方法,该类的常用构造方法如下:
File file = new File(String pathName) //实例化File类对象的时候,需要设置好路径
File类中的主要方法和变量如下:
2.实例操作
创建一个新文件
public class FileDemo1 {
public static void main(String[] args) throws IOException {
File file = new File("d:\\test.txt");
file.createNewFile(); //根据指定路径,创建文件
}
}
在各个操作系统中,实际上路径的分隔符是不一样的,如:
widows中使用反斜杠:“\”
linux中使用正斜杠:“/”
如果想让java程序的可移植性继续保持,最好根据所在的操作系统自动使用分隔符。
在File类中,有两个操作分隔符的常量,分别是pathSeparator和separator。
public void test(){
System.out.println(File.pathSeparator); --->";"
System.out.println(File.separator); --->"\"
}
因此可以采用separator自动使用分隔符。
public class FileDemo1 {
public static void main(String[] args) throws IOException {
File file = new File("d:"+File.separator+"test2.txt");
file.createNewFile(); //根据指定路径,创建文件
}
}
注意:在操作文件的时候一定注意分隔符!使用File.separator表示。
删除一个指定文件
boolean delete() 删除此抽象路径名表示的文件或目录。
public class FileDemo1 {
public static void main(String[] args) throws IOException {
File file = new File("d:"+File.separator+"test2.txt");
file.delete();//删除文件
}
}
为了使删除文件操作更加严谨,在删除前先判断文件是否存在.
boolean exists()
测试此抽象路径名表示的文件或目录是否存在。
public class FileDemo1 {
public static void main(String[] args) throws IOException {
File file = new File("d:"+File.separator+"test2.txt");
if (file.exists()) { //如果文件存在则删除
file.delete();
}else{ //不存在则创建文件
file.createNewFile();
}
}
}
创建和删除文件并不会立刻执行,可能会产生延迟,这是因为java需要通过JVM与底层进行交互,所有的操作需要经过JVM完成。
创建一个文件夹
boolean mkdir() 创建此抽象路径名指定的目录。
boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
public class FileDemo1 {
public static void main(String[] args) throws IOException {
File file = new File("d:"+File.separator+"devin");
file.mkdir();//创建文件夹
}
}
列出指定目录的全部文件
以字符串数组的形式返回:public String[] list()
以File数组的形式返回:public File[] listFiles()
public class FileDemo1 {
public static void main(String[] args) throws IOException {
File file = new File("d:"+File.separator);
String[] str = file.list();
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
}
结果运行:
devin
test.txt
test3.txt
test4.txt
以上只是列出了名字,包括文件的名字和文件夹的名字。
public class FileDemo1 {
public static void main(String[] args) throws IOException {
File file = new File("d:"+File.separator);
File[] listFiles = file.listFiles();
for (int i = 0; i < listFiles.length; i++) {
System.out.println(listFiles[i]);
}
}
}
结果运行:
d:\devin
d:\test.txt
d:\test3.txt
d:\test4.txt
以上列出的是完整的路径。
判断一个给定的路径是不是目录
public boolean isDirectory()
public class FileDemo1 {
public static void main(String[] args) throws IOException {
File file = new File("d:"+File.separator);
if (file.isDirectory()) {
System.out.println(file.getPath()+ "是目录");
}else{
System.out.println(file.getPath() + "不是目录");
}
}
}
运行结果:
d:\是目录
遍历目录下的所有文件
public class FileDemo1 {
public static void main(String[] args) throws IOException {
File myFile = new File("f:" + File.separator);
print(myFile);
}
public static void print(File file) {// 递归调用
if (file != null) { // 判断是否为空
if (file.isDirectory()) { // 是否为目录
File[] listFiles = file.listFiles();
if (listFiles != null) {
for (int i = 0; i < listFiles.length; i++) {
print(listFiles[i]);
}
}
} else {
System.out.println(file);
}
}
}
}