1:创建一个File对象
获取文件属性
public String getAbsolutePath(); 获取绝对路径。
public String getPath(); 获取路径。
public String getName(); 获取名称。
public String getParent(); 获取上层文件目录。若无,返回null。
public long length(); 获取文件长度。不能获取目录的长度。
public long lastModified(); 获取最后一次修改的时间,毫秒值。
public String[] list(); 获取指定目录下的所有文件或文件目录的名称数组。
public File[] listFiles(); 获取指定目录下的所有文件或文件目录的File数组。
import java.io.*;
public class Example10_1 {
public static void main(String args[]) {
File f = new File("C:\\ch10","Example10_1.java");
System.out.println(f.getName()+"是可读的吗:"+f.canRead());
System.out.println(f.getName()+"的长度:"+f.length());
System.out.println(f.getName()+"的绝对路径:"+f.getAbsolutePath());
System.out.println(f.getName()+"的最后修改时间:"+f.lastModified());
File file = new File("new.txt");
System.out.println("在当前目录下创建新文件"+file.getName());
if(!file.exists()) {
try {
file.createNewFile();
System.out.println("创建成功");
}
catch(IOException exp){}
}
}
}
2:重命名并移动文件
//public boolean renameTo(File dest); 把文件重命名为指定的文件路径名。
//以file1.renameTo(file2)为例,要返回true,需要file1在硬盘中是存在的,而file2不能在硬盘中存在。
//上面的测试执行后,成功将test1.txt文件转移到d://AAA路径下并将名称修改为test2.txt
File file5 = new File("C:\\Users\\windows\\Desktop\\FileOperate\\test.txt");//硬盘上存在test1.txt
File file6 = new File("C:\\Users\\windows\\Desktop\\test2.txt");//硬盘上不存在test2.txt
boolean b = file5.renameTo(file6);
System.out.println(b);
3:判断文件相关属性
public boolean isDirectory();判断文件是否是文件目录。
public boolean isFile();判断是否是文件。
public boolean exists();判断是否存在。
public boolean canRead();判断是否可读。
public boolean canWrite();判断是否可写。
public boolean isHidden();判断是否隐藏
File file = new File("new.txt");//该文件提前在硬盘中存在
System.out.println("是否是文件目录:"+file.isDirectory());
System.out.println("是否是文件:"+file.isFile());
System.out.println("是否存在:"+file.exists());
System.out.println("是否可读:"+file.canRead());
System.out.println("是否可写:"+file.canWrite());
System.out.println("是否隐藏:"+file.isHidden());
若将上面第一行代码中文件名改为new1.txt,则下方输出全为false
File 类是对文件系统的映射 并不是硬盘上真实的文件
所以 new File(“xxx.xxx”) 只是在内存中创建File文件映射对象,而并不会在硬盘中创建文件
File file = new File("new1.txt");//该文件提前在硬盘中该程序文件目录下存在
4:在硬盘中创建真实存在的文件
使用构造器实例化一个File,只是在内存中创建了这个对象。下面介绍的File类的创建方法才是真正在硬盘上创建一个文件或文件目录。
public boolean createNewFile();
创建文件,若文件存在则不创建,返回false
public boolean mkdir();
创建文件目录。如果此文件目录存在,或此文件目录的上层目录不存在,就不创建了。
public boolean mkdirs();
创建文件目录,如果上层文件目录不存在,一并创建
注意:如果在创建文件或创建文件目录时,没有写盘符路径, 默认在项目路径下。
File file = new File("hi.doc");//在磁盘创建一个文件
if (!file.exists()) {
file.createNewFile();
System.out.println("创建成功");
} else {
file.delete();
System.out.println("删除成功");
}
File file = new File("d:\\aa");//在磁盘创建一个文件夹
boolean mkdir = file.mkdir();//若上层目录不存在,返回false
if (mkdir) {
System.out.println("创建成功");
} else {
System.out.println("创建失败");
}
File file1 = new File("d:\\bb\\cc\\dd");
boolean mkdirs = file1.mkdirs();//若上层目录不存在,一并创建
if (mkdirs) {
System.out.println("创建成功");
} else {
System.out.println("创建失败");
}
File file1 = new File("d:\\bb\\cc\\dd");
boolean mkdirs = file1.mkdir();//若上层目录不存在,返回false
if (mkdirs) {
System.out.println("创建成功");
} else {
System.out.println("创建失败");
}
5.删除文件
public boolean delete(); 删除文件或文件夹
删除时,该文件目录内不能包含文件或文件目录。另外需注意:Java中的删除不走回收站。
//先创建d:\\bb\\cc\\dd 文件夹,后尝试删除cc文件夹,但c下面还有子文件夹,故删除失败
File file1 = new File("d:\\bb\\cc\\dd");
boolean mkdirs = file1.mkdirs();//若上层目录不存在,则创建上层目录
if (mkdirs) {
System.out.println("创建成功");
} else {
System.out.println("创建失败");
}
File file2 = new File("d:\\bb\\cc");//cc下面还有子文件夹,故删除失败
System.out.println(file2.delete());
二:练习
File file = new File("d:\\aa\\hello.txt");
File file1 = new File(file.getParent(),"bb");
file1.mkdir();//创建文件夹
File file2 = new File(file.getParent(),"cc.doc");
file2.createNewFile();//创建文件
file.delete();//删除
执行前
执行后
2:判断指定目录下,是否有后缀名为.的docx文件,如果有,就输出该文件名称。
方法一:使用String[] list();
File file = new File("C:\\Users\\windows\\Desktop");
String[] list = file.list();//注意list()返回类型时String
for (String f : list) {
if (f.endsWith(".docx")) {
System.out.println(f);
}
}
方法二:使用File[] listFiles();
File file = new File("C:\\Users\\windows\\Desktop");
File[] listFiles = file.listFiles();
for (File f : listFiles) {
if (f.getName().endsWith(".docx")) {
System.out.println(f.getName());
}
}
方法三:使用FileFilter过滤器
File file = new File("C:\\Users\\windows\\Desktop");
File[] listFiles = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".png");
}
});//匿名类
for (File f : listFiles) {
System.out.println(f.getName());
}
补充内容