十三、File
一、java.io.File类
1.凡是与输入输出相关的类,接口等都定义在java.io包下
2.File是一个类,可以有构造器创建对象,此对象对应的一个文件(各种文件,.txt,.avi....)或者文件目录
3.File类对象与平台无关
4.File中的方法仅仅涉及到,如何创建、删除,重命名等,不能操作内容,内容的操作必须由IO流来解决
5.File类的对象常作为IO具体类的构造器形参;
二、File中的常用方法:
createNewFile();//创建文件
exist() 是否存在or文件夹
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 @Test 2 public void test7() throws IOException { 3 // 文件表示成了Java的一个对象,当文件变成一个对象了就好操作了 4 File file1 = new File("/Users/lixiuming/learning_summary/testCreate.txt"); 5 System.out.println("file1==>" + file1.exists()); 6 file1.createNewFile(); 7 System.out.println("file1==>" + file1.exists()); 8 }
getName(); 文件名
getPath(); 文件路径
getAbsoluteFile();
getAbsoltePath(); 文件绝对路径
getParent(); 上层文件目录
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 // 当文件存在时的结果 2 // file1.getName()==>testCreate.txt 3 // file1.getPath()==>/Users/lixiuming/learning_summary/testCreate.txt 4 // file1.getAbsoluteFile()==>/Users/lixiuming/learning_summary/testCreate.txt 5 // file1.getParent()==>/Users/lixiuming/learning_summary 6 @Test 7 public void test8() throws IOException { 8 // 文件表示成了Java的一个对象,当文件变成一个对象了就好操作了 9 File file1 = new File("/Users/lixiuming/learning_summary/testCreate.txt"); 10 System.out.println("file1==>" + file1.exists()); 11 if( file1.exists()) { 12 System.out.println("file1.getName()==>" + file1.getName()); 13 System.out.println("file1.getPath()==>" + file1.getPath()); 14 System.out.println("file1.getAbsoluteFile()==>" + file1.getAbsoluteFile()); 15 System.out.println("file1.getParent()==>" + file1.getParent()); 16 }else { 17 file1.createNewFile(); 18 } 19 20 }
renameTo(File newName) 重命名,要求newName的名字一定不存在,oldName一定存在
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 @Test 2 public void test9() throws IOException { 3 // 文件表示成了Java的一个对象,当文件变成一个对象了就好操作了 4 File file1 = new File("/Users/lixiuming/learning_summary/testCreate.txt"); 5 System.out.println("file1==>" + file1.exists()); 6 if( file1.exists()) { 7 File file2 = new File("/Users/lixiuming/learning_summary/testCreate1.txt"); 8 file1.renameTo(file2); 9 } 10 }
delete()//删除文件/文件夹
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 2 @Test 3 public void test10() throws IOException { 4 // 文件表示成了Java的一个对象,当文件变成一个对象了就好操作了 5 File file1 = new File("/Users/lixiuming/learning_summary/testCreate1.txt"); 6 System.out.println("file1==>" + file1.exists()); 7 if( file1.exists()) { 8 file1.delete();//删除文件 9 } 10 File file2 = new File("/Users/lixiuming/learning_summary/aa/bb"); 11 if( file2.exists()) { 12 file2.delete();//删除文件夹 13 } 14 }
mkDir()//创建一个目录
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 @Test 2 public void test5() { 3 // 文件表示成了Java的一个对象,当文件变成一个对象了就好操作了 4 File file1 = new File("/Users/lixiuming/learning_summary/aa"); 5 6 if (file1.exists()) { 7 8 file1.delete(); 9 10 } else { 11 12 file1.mkdir(); 13 14 } 15 16 System.out.println("file1==>" + file1.exists());//当aa文件夹不存在时,true,aa存在时false 17 }
mDirs()//当上级目录不存在是情况下,一并创建
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 @Test 2 public void test5() { 3 // 文件表示成了Java的一个对象,当文件变成一个对象了就好操作了 4 File file1 = new File("/Users/lixiuming/learning_summary/aa/bb"); 5 6 if (file1.exists()) { 7 8 file1.delete(); 9 10 } else { 11 12 file1.mkdir();//如果aa目录不存在,那么该目录创建失败 13 14 } 15 16 System.out.println("file1==>" + file1.exists());//当aa文件夹不存在时,true,aa存在时false 17 } 18 @Test 19 public void test6() { 20 // 文件表示成了Java的一个对象,当文件变成一个对象了就好操作了 21 File file1 = new File("/Users/lixiuming/learning_summary/aa/bb"); 22 23 if (file1.exists()) { 24 25 file1.delete(); 26 27 } else { 28 29 file1.mkdirs();//如果aa目录不存在,那么该目录也会创建成功 30 31 } 32 33 System.out.println("file1==>" + file1.exists());//当bb文件夹不存在时,true,bb存在时false 34 }
canWrite(); 是否可写
CanRead(); 可读
isFile(); 是一个文件
isDirectory() 是一个文件目录
lastModified(); 最后一次修改时间(返回时间戳)
length() 文件(大小此抽象路径名表示的文件的长度)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 // File的canRead:true 2 // File的canWrite:true 3 // File的isFile:false 4 // File的isDirectory:true 5 // File的lastModified:1617959055000 6 // File的length:288 7 @Test 8 public void test11() { 9 // 文件表示成了Java的一个对象,当文件变成一个对象了就好操作了 10 File file4 = new File("/Users/lixiuming/learning_summary/"); 11 System.out.println("File的canRead:"+file4.canRead()); 12 System.out.println("File的canWrite:"+file4.canWrite()); 13 System.out.println("File的isFile:"+file4.isFile()); 14 System.out.println("File的isDirectory:"+file4.isDirectory()); 15 System.out.println("File的lastModified:"+file4.lastModified()); 16 System.out.println("File的length:"+file4.length()); 17 }
list() //把文件目录里的文件列出来,这里是 文件名+后缀
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 // list==>server.xml 2 // list==>.DS_Store 3 // list==>集合.xmind 4 // list==>cad绘制程序.txt 5 // list==>cad绘制.txt 6 // list==>并行和并发.jpg 7 @Test 8 public void test3() { 9 // 文件表示成了Java的一个对象,当文件变成一个对象了就好操作了 10 File file4 = new File("/Users/lixiuming/learning_summary/"); 11 String[] l = file4.list(); 12 File[] f = file4.listFiles(); 13 // String类型 14 for (int i = 0; i < l.length; i++) { 15 System.out.println("list==>" + l[i]); 16 } 17 18 }
listFiles()//把文件目录里的文件列出来,这里是文件的绝对地址
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 // listFile==>/Users/lixiuming/learning_summary/server.xml 2 // listFile==>/Users/lixiuming/learning_summary/.DS_Store 3 // listFile==>/Users/lixiuming/learning_summary/集合.xmind 4 // listFile==>/Users/lixiuming/learning_summary/cad绘制程序.txt 5 // listFile==>/Users/lixiuming/learning_summary/cad绘制.txt 6 // listFile==>/Users/lixiuming/learning_summary/并行和并发.jpg 7 @Test 8 public void test4() { 9 // 文件表示成了Java的一个对象,当文件变成一个对象了就好操作了 10 File file4 = new File("/Users/lixiuming/learning_summary/"); 11 String[] l = file4.list(); 12 File[] f = file4.listFiles(); 13 // File类型 14 for (int i = 0; i < f.length; i++) { 15 System.out.println("listFile==>" + f[i]); 16 } 17 }
补充:
路径分为两种:绝对路径和相对路径
绝对路径:包括盘符等的完整的文件路径
相对路径:相对当前文件的路径;
- “./” :表示文件目前所在的目录。
- “../”:表示文件的上一层目录。
- “/” :表示所在文件的一级目录。(就是在根目录下)
博客园地址:https://www.cnblogs.com/lixiuming521125/