File类概述

㈠ File类:用于描述文件系统中的一个文件或目录。

 

㈡ File类的功能:我们通过File可以获取文件或目录的名字,大小,修改日期等信息。但是不能对文件内容进行访问

    ① File.separator 是个常量,用于解决操作系统间目录分隔符之间的差异。

    ② 路径中的"."代表当前目录。

    ③ 构造方法:File(String path),根据给定的路径,创建File对象来描述这个文件或目录。

    例如:

        File file = new File("."+File.separator+"file.txt");
        File file = new File("file.txt");// 不加 "." ,默认是在当前目录下

 

    ④ 重载构造方法:在指定目录中创建文件或目录

        File file = new File(File dir,String name);

        参数1:描述父目录(上级目录)的File对象

        参数2:当前文件或目录的名字

 

㈢ File的常用方法

long length(); // 获取文件的大小 ,以字节为单位.
long lastModified(); // 获取文件的最后修改时间,毫秒值.
String getName(); // 获取文件或目录的名字.
String getPath(); // 获取当前文件或目录的相对路径,以字符串形式返回.
String getAbsolutePath(); // 获取当前文件或目录的绝对路径.
String getCanonicalPath(); // 获取操作系统标准的绝对路径,但是该方法需要我们捕获异常.
boolean exists(); // 判断当前File对象描述的文件或目录是否存在.
boolean isFile(); // 判断当前File对象描述的是否为一个文件.
boolean isDirectory(); // 判断当前File对象描述的是否为一个目录.
boolean canRead(); // 判断当前文件是否可读.
boolean canWrite(); // 判断当前文件是否可写.

 

 

㈣ 使用File创建文件或目录

    ① 创建目录需要注意的几个问题

        1) 指定想要创建目录的位置以及目录名称,并创建对应的File对象

        2) 创建前确保该目录是不存在的

        3) 通过File对象创建它

        4) 当我们创建该对象后,并不代表他描述的目录一定存在,这只是java的一个对象,在内存中存在的。是否在硬盘上存在,要进行判断。

 

    ② 创建文件或目录的方法

    boolean mkdir():创建File描述的目录。

    boolean createNewFile():创建File描述的文件

    boolean mkdirs():创建目录,同时创建所有不存在的上级目录。在创建多级目录时,应选取使用mkdirs()方法,若在多级目录下创建文件,应先确保该文件所处的目录存在后,再创建文件。

 

㈤ 删除文件或目录

    ① 删除给定的File对象需要注意的几个问题

        1) 要先判断它是一个文件还是目录,

        2) 若是文件则可以直接删除,

        3) 若是目录,则要先获取其所有子项,然后逐个删除后,再删除这个目录。

 

    ② 删除文件或目录的方法

    boolean delete():删除文件或目录。删除目录时,要确保该目录下没有任何子项才可以成功删除目录。

 

㈥ 查看目录下的内容

String[] list():返回当前目录下子项的名字

File[] listFiles():获取当前目录下的所有子项,每一个子项用一个File对象描述,最终以数组形式返回。

File[] listFiles(FileFilter filter):重载的listFiles()方法,可以传入一个过滤器,用来返回当前目录下满足过滤器要求的所有子项。

 

㈦ File代码示例

    ① 给定一个File对象,若是目录,输出该目录下的所有子项,子项若是目录,同样递归输出其子项。按如下样式输出:

    -src

    --java

    ---XXX.java

public class FileShows {
        public static void main(String[] args) {
                File file = new File("src");
                showsFile(file, 1);
        }
        public static void showsFile(File file, int i){//i 代表该方法被调用的次数,从0开始为第一次。
                String str = "";
                for(int j=0;j<i;j++){
                        str += "-";
                }
                System.out.println(str + file.getName());
                i++;//方法调用一次,i自加1,下次调用时str增加一个“-”。
                if(file.isDirectory()){
                        for(File sub : file.listFiles()){
                                showsFile(sub, i);
                        }
                }
        }
}

 

    ② 递归删除目录下的子目录

public class DeleteFile {
        public static void main(String[] args) {
                File dir = new File("."+File.separator+"a");
                deleteFile(dir);
        }
        // 删除给定的文件或目录
        public static void deleteFile(File file){
                /**
                 * 要想删除给定的File对象,要先判断它是一个文件还是目录
                 * 若是文件,则可以直接删除,
                 * 若是目录,则要先获取其所有子项,然后逐个删除后,再删除这个目录
                 */
                //若是目录
                if(file.isDirectory()){
                        //先删除所有子项
                        File[] subs = file.listFiles();
                        for(File sub : subs){
                                deleteFile(sub);
                        }                
                }
                //删除当前file对象描述的文件或目录
                file.delete();
        }
}

 

    ③ 创建文件

public class FileMkDirDemo {
        public static void main(String[] args) throws IOException {
                /**
                 * 创建目录
                 * 1:指定想要创建目录的位置以及目录名称,并创建对应的File对象
                 * 2:创建前确保该目录是不存在的
                 * 3:通过File对象创建它
                 */
                //1
                File dir = new File("."+File.separator+"mydir");
                //2
                if(!dir.exists()){
                        //3
                        dir.mkdir();
                }
                //输出目录路径
                System.out.println(dir.getCanonicalPath());
 
                /**
                 * 在mydir目录中创建文件test.txt,创建文件的步骤和创建目录步骤一致
                 */
                //1
                File file = 
                        new File("." + File.separator +"mydir" + File.separator +"test.txt");
                /**
                 * 重载构造方法
                 * 在指定目录中创建文件或目录
                 * 参数1:描述父目录(上级目录)的File对象
                 * 参数2:当前文件或目录的名字
                 */
                // File file = new File(dir,"text.txt");
                //2
                if(!file.exists()){
                        //3
                        file.createNewFile();
                }
                System.out.println(file.getCanonicalPath());
 
                /**
                 * 在当前目录下创建 a/b/c/d,多级目录
                 */
                File mdir = new File(
                                "." + File.separator +
                                "a" + File.separator +
                                "b" + File.separator +
                                "c" + File.separator +
                                "d");
                
                if(!mdir.exists()){
                        //使用mkdir创建目录,必须保证上级目录要存在
                        // mdir.mkdir();
                        //mkdirs创建目录,会自动将不存在的上级目录创建出来
                        mdir.mkdirs();
                }
                System.out.println("目录创建完毕");
        }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值