java基础42 File类的构造函数及其方法

本文知识点(目录):

    1、IO流(Input Output)
    2、IO流技术的运用场景
    3、File类的构造函数(方法)
    4、File类的一些常用方法
    5、实例(解析File类的常用方法)
    6、附录1(扫描系统上的盘符和指定目录下的所有文件和文件夹)
    7、附录2(在指定目录下,扫描出所有的指定类型的文件)
    8、附录3(扫描电脑中所有的文件和文件夹,及下级目录下的所有文件和文件夹。或扫描指定盘符下的所有文件和文件夹)
    9、附录4(删除磁盘中指定的文件夹里面的所有文件和文件夹)



1、IO流(Input Output)

    IO流技术主要的作用是解决设备与设备之间的数据传输问题,比如:硬盘的数据--读取到-->内存中         内存的数据--读取到-->硬盘中          键盘上的数据--读取到-->内存中

2、IO流技术的运用场景

    导出报表、上传大头照、下载、解析xml文件.....等等 (数据保存到硬盘,该数据可以做到永久性保存。数据一般以文件的形式保存到硬盘上。sun使用一个File类来描述文件或者文件夹)

3、File类的构造函数(方法)

    File(String pathname):指定文件或者文件夹的路径来创建一个File文件
    File(File parent, String child):根据parent抽象路径和child路径名字符串,创建一个新的File实例
    File(String parent, String child):

目录分割符:在Windows机器上的目录分隔符是\,在Linux机器上的目录分隔符是/

注意:在Windows上面\与/都可以作为目录分隔符。而且,如果写/的时候,只需要写1个正斜杠即可,而写\的时候,需要写2个反斜杠。

 1 package com.dhb.file;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 /**
 7  * @author DSHORE / 2018-6-22
 8  *
 9  */
10 public class Demo1 {
11     public static void main(String[] args) throws IOException {
12         File file = new File("F:/a.txt");//指定路径    [构造函数]
13         file.createNewFile();//创建文件(空文件)    [方法]
14         
15         File files = new File("F:\\","b.txt");//第一个参数是路径,第二个参数是要创建文件的文件名    [构造函数]
16         files.createNewFile();//创建文件(空文件)    [方法]
17     }
18 }

4、File类的一些常用方法

创建:
   createNewFile():在指定位置创建空文件,成功返回true,如果已存在就不再创建了返回false
   mkdir():在指定位置创建目录,这之后创建最后一级目录,如果上级目录不存在就抛出异常.
   mkdirs():在指定位置创建目录,这也会创建路径中所有不存在的父目录
   renameTo(File dest):重命名文件或文件夹。文件不同时,相当于文件的剪切,剪切的时候不能操作非空文件夹。移动/重命名成功返回true,失败返回false
  
删除:
   delete() :删除一个文件或者空文件夹,如果文件夹不为空,则不能删除,成返回true,失败返回false
   deleteOnExit(): 在虚拟机终止时,请求删除此抽象路径名的文件或者目录,保证文件异常时也可以删除文件
 
判断:
   exists():判断指定的文件或者文件夹是否存在
   isFile():判断是否是一个文件;如果不存在,则为false
   isDirectory():判断是否是一个文件夹
   isHidden():判断指定的文件是否是隐藏文件
   isAbsolute():判断指定的文件或文件夹是否是在绝对路径下
 
获取:
  getName():获取文件或文件夹名称
  getPath():返回的是绝对路径,可以是相对路径,但是目录要指定
  getAbsolutePath():获取绝对路径
  length():获取文件的大小(字节为单位)
  getParent():获取文件的父路径
  lastModified():获取文件最后一次修改的时间
 
  注意:
  . :一个点表示当前路径
  .. :两个点表示上一级路径

  路径问题:
       绝对路径:该文件在硬盘上的完整路径;绝对路径一般是以盘符开头的。
       相对路径:资源文件相对于当前程序所在路径。
  注意:如果程序当前所在路径与资源文件不再同一个盘下面,是没法写相对路径的

5、实例          

 1 package com.dhb.file;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 /**
 7  * @author DSHORE / 2018-6-22
 8  *
 9  */
10 public class Demo2 {
11     public static void main(String[] args) throws IOException {
12         //创建
13         File file=new File("F:\\aa");
14         System.out.println("创建文件成功了吗?"+file.createNewFile());
15         File dir=new File("F:\\aaa\\aaa");
16         System.out.println("创建文件夹成功了吗?"+dir.mkdir());
17         File dirs=new File("F:\\aaa\\aaa\\aa\\cc\\ddd");
18         System.out.println("创建多级文件夹成功了吗?"+dirs.mkdirs());
19         
20         File destFile=new File("F:\\aaaw");
21         System.out.println("重命名文件夹成功吗?"+dir.renameTo(destFile));
22         System.out.println("重命名文件成功吗?"+file.renameTo(destFile));
23         
24         //删除
25         File deletefile=new File("F:\\aaa");
26         System.out.println("删除文件/空文件夹成功吗?"+deletefile.delete());
27         file.deleteOnExit();//jvm
28         System.out.println("哈哈哈");
29         
30         //判断
31         File fil=new File("F:\\a.txt");
32         file.createNewFile();//创建一个文件
33         System.out.println("该文件/文件夹存在吗?"+fil.exists());
34         System.out.println("判断是否是一个文件:"+fil.isFile());
35         System.out.println("判断是否是一个文件夹:"+fil.isDirectory());
36         System.out.println("隐藏文件吗?"+fil.isHidden());
37         System.out.println("是绝对路径吗?"+fil.isAbsolute());
38     }
39 }

 "获取"的例子

 1 package com.dhb.file;
 2 
 3 import java.io.File;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Date;
 6 
 7 /**
 8  * @author DSHORE / 2018-6-25
 9  *
10  */
11 public class Demo3 {
12     public static void main(String[] args) {
13         /*File file=new File("..\\homeWork.java");
14         System.out.println(file.exists());*/
15         
16         File f=new File("..\\..\\a.txt");//上上级路径下的a.txt文件
17         System.out.println("获取文件名:"+f.getName());//返回值:a.txt
18         System.out.println("获取相对路径:"+f.getPath());//返回值:..\..\a.txt   说明:a.txt文件在C:\MyEclipse10路径下
19         /** 当上面两条输出语句的绝对路径下没有a.txt这个文件时,也是输出这个结果,因为他获取的是当前对象f的值*/
20         System.out.println(f.exists());//返回值:true     说明:C:\MyEclipse10路径下有a.txt文件
21         System.out.println("获取绝对路径:"+f.getAbsolutePath());//返回值:C:\MyEclipse10\MyCode\MyJavaCode\..\..\a.txt
22         System.out.println("获取文件的大小(字节为单位):"+f.length());//返回值:10
23         System.out.println("获取文件的父路径:"+f.getParent());//返回值:..\..   说明:其父路径为C:\MyEclipse10
24         long lm=f.lastModified();
25         Date date=new Date(lm);
26         SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");    
27         System.out.println("获取文件最后一次修改的时间:"+sdf.format(date));//返回值:2018年06月25日 11:29:49
28     }
29 }

运行结果图

附录1

 与文件夹操作相关:
   static File[] listRoots():列出所有的根目录(Windows所有系统盘符)   
   list():返回指定目录下的所有文件或文件夹名,包含隐藏文件(返回的文件/文件夹名是字符串,不可再对文件/文件夹进行操作)
   listFiles():返回指定目录下的所有文件或文件夹名,包含隐藏文件(可以再对文件/文件夹进行操作)

 1 package com.dhb.file;
 2 
 3 import java.io.File;
 4 
 5 /**
 6  * @author DSHORE / 2018-6-25
 7  *
 8  */
 9 public class Demo4 {
10     public static void main(String[] args) {
11         File[] roots=File.listRoots();
12         for (File file : roots) {
13             System.out.println(file);
14             /* C:\      //运行结果
15              * D:\
16              * E:\
17              * F:\
18              * G:\
19              * H:\
20              * */
21         }
22         
23         File file=new File("F:\\MyJavaCode");
24         String[] s=file.list();
25         for (String string : s) {
26             System.out.println(string);//返回指定目录下的所有文件或文件夹名,包含隐藏文件(返回的文件/文件夹名是字符串,不可再对文件/文件夹进行操作)
27         }
28         
29         File[] f=file.listFiles();
30         for (File file2 : f) {
31             System.out.println(file2.getName());//返回指定目录下的所有文件或文件夹名,包含隐藏文件(可以再对文件/文件夹进行操作)
32         }
33     }
34 }

运行结果图

           后面两条输出语句的结果都一样

附录2

例1:

 1 package com.dhb.file;
 2 
 3 import java.io.File;
 4 
 5 /**
 6  * @author DSHORE / 2018-6-25
 7  *
 8  */
 9 /* 需求1:指定一个文件夹,然后返回文件夹下面所有java文件
10  * */
11 public class Demo5 {
12     public static void main(String[] args) {
13         listJava(new File("F:\\MyJavaCode"));
14     }
15     public static void listJava(File dir){
16         File[] file=dir.listFiles();
17         for (File file2 : file) {
18             //方法1
19             if(file2.getName().endsWith(".java")){
20                 System.out.println(file2.getName());
21             }
22             //方法2:正则表达式
23             String fileName=file2.getName();
24             if(fileName.matches(".+\\.java")){
25                 System.out.println(fileName);
26             }
27         }
28     }
29 }

运行结果图

            

例2:

 1 package com.dhb.file;
 2 
 3 import java.io.File;
 4 
 5 /**
 6  * @author DSHORE / 2018-6-26
 7  *
 8  */
 9 /*
10  * 需求2:指定一个文件夹,然后列出文件夹下面的所有子文件与文件夹,但是 格式要如下
11  * 
12  * 文件:
13  *      文件名1
14  *         文件名2
15  *         文件名2
16  *
17  * 文件夹:
18  *         文件夹1
19  *         文件夹2
20  *         文件夹3
21  * */
22 public class Demo6 {
23     
24     public static void listJava2(File dir){
25         File[] file=dir.listFiles();
26         System.out.println("以下是文件:");
27         for (File file2 : file) {
28             if(file2.isFile()){//判断其是否是文件
29                 System.out.println(file2.getName());
30             }
31         }
32         System.out.println("以下是文件夹:");
33         for (File file2 : file) {
34             if(file2.isDirectory()){//判断其是否是文件夹
35                 System.out.println(file2.getName());
36             }
37         }
38     }
39     public static void main(String[] args) {
40         listJava2(new File("F:\\MyJavaCode"));
41     }
42 }

运行结果图

 附录3

 1 package com.dhb.file;
 2 
 3 import java.io.File;
 4 
 5 /**
 6  * @author DSHORE / 2018-6-26
 7  *
 8  */
 9 //需求:扫描电脑中所有文件夹和文件以及文件夹下的文件和文件夹,或扫描指定盘符下的所有文件和文件夹等等
10 public class Demo7 {
11     public static void listDirtory(String dir){
12         File f=new File(dir);
13         File[] f2=f.listFiles();//得到文件和文件夹
14         if(f2==null){
15             return;
16         }else{
17             for (int i = 0; i < f2.length; i++) {
18                 if(f2[i].isDirectory()){//判断是否是 文件夹
19                     System.out.println(f2[i].getAbsolutePath()+" \"is director file\"");//返回值是“文件夹”
20                     listDirtory(f2[i].getAbsolutePath());//继续扫描文件夹里面的文件和文件夹
21                 }else{
22                     System.out.println(f2[i].getAbsolutePath());//返回值是“文件”
23                 }
24             }
25         }
26     }
27     public static void main(String[] args) {
28         /*File[] f=File.listRoots();//扫描电脑中所有根盘符
29         for (File file : f) {
30             System.out.println(file);
31             listDirtory(file.toString());//继续扫描文件夹里面的文件和文件夹
32         }*/
33         //扫描当前磁盘
34         listDirtory(File.separator);
35         //扫描指定磁盘
36         //listDirtory("F:\\");
37     }
38 }

运行结果图(文件和文件夹太多,下面只显示部分)路径的最后一级是文件/文件夹

 附录4

 1 package com.dhb.file;
 2 
 3 import java.io.File;
 4 
 5 /**
 6  * @author DSHORE / 2018-7-4
 7  *
 8  */
 9 //需求:删除磁盘中指定的文件夹里面的所有文件和文件夹
10 public class Demo12 {
11     public static void delDir(File dir){
12         File[] files=dir.listFiles();
13         if(files != null){                        
14             for (int i = 0; i < files.length; i++) {
15                 if(files[i].isFile()){
16                     boolean b = files[i].delete();
17                     if(b){
18                         System.out.println(files[i].getAbsolutePath()+"\'文件删除成功\'");
19                     }
20                 }else{
21                     delDir(files[i]);
22                 }
23             }
24         }//留下根目录,根目录里面的文件和文件夹全删了
25         for (int j = 0; j < files.length; j++) {
26             if (files[j].isDirectory()) {
27                 boolean b2 = files[j].delete();
28                 //dir.delete();//删除根目录
29                 if (b2) {
30                     System.out.println(files[j].getAbsolutePath()+"\'目录删除成功\'");
31                 }
32             }
33         }
34         if ("F:\\day".equals(dir.getAbsolutePath())) {
35             boolean b3 = dir.delete();//删除根目录
36             if (b3) {
37                 System.out.println(dir.getAbsolutePath()+"\'根目录删除成功\'");
38             }
39         }
40     }
41     public static void main(String[] args) {
42         File f=new File("F:\\day");
43         delDir(f);
44     }
45 }

删除前

      

删除后(程序运行后)

         

 

 

 

 

 

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9214032.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

 

 
 
G
M
T
 
检测语言世界语中文简体中文繁体丹麦语乌克兰语乌兹别克语乌尔都语亚美尼亚语伊博语俄语保加利亚语信德语修纳语僧伽罗语克罗地亚语冰岛语加利西亚语加泰罗尼亚语匈牙利语南非祖鲁语卡纳达语卢森堡语印地语印尼巽他语印尼爪哇语印尼语古吉拉特语吉尔吉斯语哈萨克语土耳其语塔吉克语塞尔维亚语塞索托语夏威夷语威尔士语孟加拉语宿务语尼泊尔语巴斯克语布尔语(南非荷兰语)希伯来语希腊语库尔德语弗里西语德语意大利语意第绪语拉丁语拉脱维亚语挪威语捷克语斯洛伐克语斯洛文尼亚语斯瓦希里语旁遮普语日语普什图语格鲁吉亚语毛利语法语波兰语波斯尼亚语波斯语泰卢固语泰米尔语泰语海地克里奥尔语爱尔兰语爱沙尼亚语瑞典语白俄罗斯语科萨科西嘉语立陶宛语索马里语约鲁巴语缅甸语罗马尼亚语老挝语芬兰语苏格兰盖尔语苗语英语荷兰语菲律宾语萨摩亚语葡萄牙语蒙古语西班牙语豪萨语越南语阿塞拜疆语阿姆哈拉语阿尔巴尼亚语阿拉伯语韩语马其顿语马尔加什语马拉地语马拉雅拉姆语马来语马耳他语高棉语齐切瓦语 世界语中文简体中文繁体丹麦语乌克兰语乌兹别克语乌尔都语亚美尼亚语伊博语俄语保加利亚语信德语修纳语僧伽罗语克罗地亚语冰岛语加利西亚语加泰罗尼亚语匈牙利语南非祖鲁语卡纳达语卢森堡语印地语印尼巽他语印尼爪哇语印尼语古吉拉特语吉尔吉斯语哈萨克语土耳其语塔吉克语塞尔维亚语塞索托语夏威夷语威尔士语孟加拉语宿务语尼泊尔语巴斯克语布尔语(南非荷兰语)希伯来语希腊语库尔德语弗里西语德语意大利语意第绪语拉丁语拉脱维亚语挪威语捷克语斯洛伐克语斯洛文尼亚语斯瓦希里语旁遮普语日语普什图语格鲁吉亚语毛利语法语波兰语波斯尼亚语波斯语泰卢固语泰米尔语泰语海地克里奥尔语爱尔兰语爱沙尼亚语瑞典语白俄罗斯语科萨科西嘉语立陶宛语索马里语约鲁巴语缅甸语罗马尼亚语老挝语芬兰语苏格兰盖尔语苗语英语荷兰语菲律宾语萨摩亚语葡萄牙语蒙古语西班牙语豪萨语越南语阿塞拜疆语阿姆哈拉语阿尔巴尼亚语阿拉伯语韩语马其顿语马尔加什语马拉地语马拉雅拉姆语马来语马耳他语高棉语齐切瓦语     
 
 
 
文本转语音功能仅限200个字符
 
 选项 : 历史 : 反馈 : Donate关闭

转载于:https://www.cnblogs.com/dshore123/p/9214032.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值