File类

1,File类

通过File类可以实现系统中文件的创建,查看,重命名等操作

1.1 File的构造方法

我们看陌生的类,首先看构造,再看类中的方法

1.2 创建文件夹

mkdir:创建文件只创建最后一层目录/文件(常见错误),中间路径不存在,则返回false
mkdirs:创建至最后一层,若中间路径不存在则创建中间路径,但若文件夹已存在则返回false

1.3 创建文件

createNewFile,若存在路径相同的文件夹或者文件则返回false

1.4 判断是否存在

exists,可以判断判断文件或文件夹是否存在

1.5 重命名(剪切)

renameTo,剪切,利用剪切特性,实现文件和文件名的重命名,移动效果

1.6 删除

delete,删除文件和文件夹
无法删除有内容的文件夹

1.7 判断是否为文件

isFile() ,如果是文件则返回true ,不是文件或是文件夹或不存在则返回false

1.8 部分代码

import java.io.*;

public class IOdemo {
    public static void main(String[] args) {
        // 书写路径是采用统一格式,后续常用 一个做斜杠 "/"
        // 全路径,出现字符串有斜杠表示转义字符,会对后面一个字符进行转义,。\n \t所以java中如果想要表示上面的路径可以使用两个有斜杠或者一个左斜杠
        String path = "F:\\testCode"; // 常用windows
        String path2 = "D:/testCode";   // 常用linux
        String path4 = "testCode.txt"; // 常用windows

        File file = new File(path);
        File file2 = new File(path2);
        File file3 = new File(file,path2);
        File file4 = new File(path4);

        System.out.println(file);   //F:\testCode
        System.out.println(file2);  //D:\testCode
        System.out.println(file3); //F:\testCode\D:\testCode 拼接
        System.out.println(file4); //testCode.txt

        // 创建文件只创建最后一层目录/文件
        // 若test不存在则报false,test目录存在则为true
        File fileA = new File("D:/testA/101");
        boolean mkdir = fileA.mkdir();
        System.out.println(mkdir);

        // 创建至最后一层,若中间路径不存在则创建中间路径,但若文件夹已存在则返回false
        // 不能重名
        File fileB = new File("D:/testB/101/aaa.txt");
        boolean mkdirs = fileB.mkdirs();
        System.out.println(mkdirs);// 创建D:/testB/101/aaa/1.txt路径,不会创建出一个txt文件

        // exists判断文件夹或者文件是否存在
        if (fileB.exists()){
            System.out.println("存在");
        }else{
            System.out.println("不存在");
        }

        // 创建文件
        File fileC = new File("D:/testB/101.txt");
        try {
            //若存在路径相同的文件夹或者文件则返回false
            //尤其注意,存在路径D:/testB/101/aaa,则无法创建D:/testB/101/aaa,但可以创建D:/testB/101/aaa.txt
            //尤其注意,存在文件D:/testB/101/aaa.txt,则无法再创建D:/testB/101/aaa.txt,但可以创建D:/testB/101/aaa.jpa

            File fileD = new File("D:/testB/");
            if (!fileD.exists()){
                fileD.mkdirs();
            }

            boolean newFile = fileC.createNewFile();
            System.out.println(newFile);
        } catch (IOException e) {
            System.out.println(e.getMessage());//若路径不存在,则抛出异常
        }

        File fileE = new File("D:/testB");
        boolean b = fileE.renameTo(new File("D:/testB/102.txt"));//文件不存在则返回false
        boolean c = fileE.renameTo(new File("D:/testB/test/102.txt"));//文件不存在则返回false
        boolean d = fileE.renameTo(new File("D:/testC/testAA"));//文件不存在则返回false
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);

        boolean e = fileE.delete();//文件不存在则返回false,无法删除又内容的文件夹
        System.out.println(e);

        File fileF = new File("D:/testB/1.txt");
        System.out.println(fileF.getName()); //1.txt
        System.out.println(fileF.getAbsolutePath());//D:\testB\1.txt
        System.out.println(fileF.getPath());//D:\testB\1.txt

        File fileG = new File("testB/1.txt");
        System.out.println(fileG.getName()); //1.txt
        System.out.println(fileG.getAbsolutePath());//F:\testCode\testB\1.txt 会加工作区的路径
        System.out.println(fileG.getPath());//D:\testB\1.txt

        File fileH = new File("D:/testB/");
        String[] strings = fileH.list();//若文件夹或文件不存在则返回空null,当为文件时也返回空
        for (String s:strings){
            System.out.println(s);
        }
        File[] files = fileH.listFiles();
        for (File f:files){
            System.out.println(f);
        }
    }
}

1.9 递归输出文件夹下的文件和文件夹,

package com.huanglk.io;

import java.io.File;

public class id {
    public static void main(String[] args) {
        File fileB = new File("F:\\新建文件夹");
        System.out.println(fileB.isFile());
        test(fileB,0);
    }

    public static void test(File file,int count){
        File[] files = file.listFiles();
        if (null!=files){
//            String k = "";
//
//            for (File f:files) {
//                System.out.println(k+f.getName()+"===="+(f.isFile()?"文件":"文件夹"));
//                test(f,count+1);
//            }

            for (File f:files) {
                for (int a = 0;a<count;a++){
                    System.out.print("\t");
                }
                System.out.println(f.getName()+"===="+(f.isFile()?"文件":"文件夹"));
                test(f,count+1);
            }
        }
    }
}

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值