File的三个构造函数:
1、File(String pathname):根据一个路径名称得到一个File对象,如果存在就返回true,如果不存在就返回false
File file=new File("C:\\Users\\youda\\Desktop\\abc.txt"); //该文件已经存在
File file1=new File("C:\\Users\\youda\\Desktop\\acb.txt");//该文件不存在
System.out.println(file.exists()); //运行结果---true
System.out.println(file1.exists()); //运行结果 ---false
2、File(String parent, String child) :
String parent="C:\\Users\\youda\\Desktop";
String child="abc.txt"; //该文件已经存在
String child1="acb.txt"; //该文件不存在
File file=new File(parent,child);
File file1=new File(parent,child1);
System.out.println(file.exists()); //运行结果:---true
System.out.println(file1.exists()); //运行结果:---false
3、File(File parent, String child)
File parent=new File("C:\\Users\\youda\\Desktop");
String child="abc.txt";//该文件已经存在
File file=new File(parent,child);
System.out.println(parent.exists()); //运行结果:---true
System.out.println(file.exists()); //运行结果:---true
创建的方法:createNewFile() mkdir() mkdirs()
createNewFile(): 这个方法是用来创建文件,如果文件存在就不创建返回false,如果不存在就创建,返回true
File file=new File("abc.txt");
System.out.println(file.createNewFile());
mkdir(),mkdirs():
File file1=new File("abc");
File file2=new File("abc//aabbcc");
System.out.println(file1.mkdir()); //mkdir()建立一级文件夹 运行结果:true
System.out.println(file2.mkdirs()); //mkdirs()建立多级文件夹 运行结果:true
重命名方法:renameTo(File des),文件重命名分为路径相同和路径不同
路径相同的改名,把同一个个目录下的abc.txt文件改名为cba.txt文件
File filebef=new File("abc.txt");
File fileaft=new File("cba.txt");
System.out.println(filebef.renameTo(fileaft));//文件在同一目录下就直接改名,返回的是true
路径相同的改名,改名并剪切文件到新路径
File file1bef=new File("cba.txt");
File file1aft=new File("C:\\Users\\youda\\Desktop\\abc.txt");//文件在不同目录下就把原来的文件剪切到目标目录下改名
System.out.println(file1bef.renameTo(file1aft)); //返回的是true
删除功能:delete()是可以删除文件或者文件夹,我们提前在Eclipse项目根目录创建abc.txt文件和aaa文件夹,bbb文件夹,其中bbb文件夹下创建ccc文件夹
File file=new File("abc.txt");
File dir1=new File("aaa");
File dir2=new File("bbb");
System.out.println(file.delete()); //返回true
System.out.println(dir1.delete()); //返回true
System.out.println(dir2.delete()); //返回false,因为bbb目录下面有ccc子文件夹的
delete不能删除有子文件夹或者文件的目录,只能删除空目录,且直接删除不会先放到回收站
判断类方法:
1、判断是否为文件或者是否为文件夹:isFilse()\isDirectory()
File dir=new File("aaa");
File file=new File("abc.txt");
//判断是否是目录
System.out.println(dir.isDirectory()); //返回true
//判断是否是文件
System.out.println(file.isFile()); //返回true
System.out.println(file.isDirectory()); //返回false
System.out.println(dir.isFile()); //返回false
2、判断是否可读:canRead()
即使java设置了文件不可读,但是由于windows上文件都认为可读,这个方法测试最好在linux系统上
File file=new File("abc.txt");
file.setReadable(false);
System.out.println(file.canRead());//返回的是true,本来应该返回false的
3、判断是否可定:canWrite()
File file=new File("abc.txt");
file.setWritable(false);
System.out.println(file.canWrite()); //返回false
4、判断文件和文件夹是否隐藏:isHidden()
File dir=new File("aaa");
File file=new File("abc.txt");
System.out.println(file.isHidden()); //如果abc.txt文件设置了隐藏就会返回true,如果没有设置隐藏就会返回false
System.out.println(dir.isHidden());
获取方法:
1、获取路径:获取绝对路径:getAbsolutePath();获取相对路径:getPath()
File dir=new File("aaa\\ccc");
File file=new File("abc.txt");
System.out.println(file.getAbsolutePath()); //返回 :E:\learn\JAVA\workspace\New\abc.txt
System.out.println(dir.getPath()); //返回:aaa\ccc
2、获取名称:获取文件或者文件夹的名称:getName()
File dir=new File("aaa\\ccc");
File file=new File("abc.txt");
System.out.println(file.getName()); //返回abc.txt
System.out.println(dir.getName()); //返回ccc
3、获取字节长度:length()
File file=new File("abc.txt");
File dir=new File("aaa\\ccc");
System.out.println(file.length()); //返回23
System.out.println(dir.length()); //返回0,似乎不能统计文件夹中字节的长度
4、获取最后一次修改时间:lastModified()
File file=new File("abc.txt");
System.out.println(file.lastModified()); 返回1531562788973
打印的是一个从1970年1月1号0时0分0秒到文件修改的时间的毫秒值
。
5、获取指定路径下文件名称的数组:list()
File file=new File("E:\\learn\\JAVA\\workspace\\New");
String[] str=file.list();
for(String string:str) {
System.out.println(string);
}
返回内容:
.classpath
.project
aaa
abc.txt
bin
src
6、获取指定路径下文件名称的对象:listFiles()
File file=new File("E:\\learn\\JAVA\\workspace\\New");
File[] files=file.listFiles();
for(File file22:files) {
System.out.println(file22);
}
返回内容:
E:\learn\JAVA\workspace\New\.classpath
E:\learn\JAVA\workspace\New\.project
E:\learn\JAVA\workspace\New\aaa
E:\learn\JAVA\workspace\New\abc.txt
E:\learn\JAVA\workspace\New\bin
E:\learn\JAVA\workspace\New\src
文件过滤:
1、获取指定路径下指定后缀名的文件:endsWith()
File desktop=new File("C:\\Users\\youda\\Desktop");
String[] str=desktop.list();
for(String string:str) {
if(string.endsWith(".txt")) {
System.out.println(string); //返回:abc.txt。打印出了Desktop目录下以txt结尾的所有文件
}
}
2、获取文件对象:
File desktop=new File("C:\\Users\\youda\\Desktop");
File[] subFiles=desktop.listFiles();
for(File file:subFiles) {
if(file.isFile()&&file.getName().endsWith(".txt")){
System.out.println(file); //返回结果:C:\Users\youda\Desktop\abc.txt,结果比上一个复杂,这个可以处理嵌套目录层级
}
}
3、文件过滤器:FilenameFilter()
File desktop=new File("C:\\Users\\youda\\Desktop");
String[] arr=desktop.list(new FilenameFilter(){
@Override
public boolean accept(File dir,String name) {
File file=new File(dir,name);
return file.isFile()&&file.getName().endsWith(".txt");
}
});
for(String string:arr) {
System.out.println(string); //返回abc.txt
}