Java中IO包下的File(基础解析一)

IO包下的File

    File
    1.可以操作文件
    2.可以操作文件夹
    3.可以操作文件的路径
    public static void fun(){
        String pathseparator = File.pathSeparator;
        System.out.println(pathseparator);
        //这里打印出来的是一个 : (冒号)
        //这是路径的分隔符
        //不同系统下 获取的路径分隔符是不同的
        //Mac系统下 路径分隔符是 :
        //Windows系统下 路径分隔符是 ;

        String separator = File.seParaTor;
        System.out.println(separator);
        // 这里打印出来的是 / 
        // 这时一个分隔符
        // Mac系统中的是      /
        // Windows系统中的 是 \
    }

构造方法

    //绝对路径
    //磁盘上的路径并且这个路径是唯一的
    //相对路径
    //相对路径是有参照物的

    构造方法
    File(String pathname)
    File(String parent, String child)
    File(File parent, String child)

    //在桌面创建一个文件夹,取名为 Test

    //构造方法一:
    // 从Test文件夹属性中 复制 Test 文件夹的路径
    File file = new File("/Users/s/Desktop/Test");
    System.out.println(file);

    //判断该路径是否存在
    boolean exists = file.exists();
    System.out.println(exists);

    //使用相对路径 参照物是当前工程的根目录
    File file1 = new File("src/s.txt");
    // 打印绝对路径
    // 这里不管有没有这个txt文件
    // 系统还是会默认打印出路径
    System.out.println(file1.getAbsolutePath());

    //构造方法二:
    String parent = "/Users/s/Desktop";
    String child = "Test";
    File file2 = new File(parent, child);
    boolean exists = file2.exists();
    System.out.println(exists3);

    //构造方法三:
    File f = new File(parent);
    File file3 = new File(f, child);
    boolean exists4 = file.exists();
    System.out.println(exists4);

创建文件方法

    //如果文件已经存在 不会重复创建
    //该方法只能创建文件 不给后缀也是创建文件
    File file = new File("/Users/s/Desktop/Test/hh.txt")
    boolean b = file.createNewFile();
    System.out.println(b);
    // 在工程的src目录下创建 s.txt 
    File file2 = new File(src/s.txt);
    boolean b1 = file2.createNewFile();
    System.out.println(b1);

    //创建文件夹(带不带后缀创建出来的都是文件夹)
    //mkdir()只能创建一级的文件夹
    //mkdirs()可以创建多级的文件夹(只要没有这个名字的文件夹,就会帮你创建)
    File file3 = new File("/Users/s/Desktop/Test/x/y/z);
    boolean m = file3.mkdirs();
    System.out.println(m);

删除

    //删除的时候会直接删除,不加入回收站
    //所以删除的时候需要小心一点
    //如果文件夹下 没有子文件夹 就可以删除
    File file = new File("/Users/s/Desktop/Test/x");
    boolean b = file.delete();
    System.out.println(b);

    //由于之前创建的x是多级文件夹 所以无法删除
    //将x改成z 发现 z文件夹被删除
    //因为这个文件夹里没有子文件夹

判断

判断是否是文件夹
    File("/Users/s/Desktop/Test/hh.txt")
    boolean directory = file.isDirectory();
    System.out.println(directory);
判断是否是文件
    File file = newFile("/Users/s/Desktop/Test/hh.txt")
    boolean file2 = file.isFile();
    System.out.println(file2);
判断文件是否存在
    File file = newFile("/Users/s/Desktop/Test/hh.txt")
    boolean exists1 = file.exists();
    System.out.println(exists1);

获取

    //在Test文件夹中创建一个txt文件取名www
    //在这个txt文件中 随便写几个字

   // 获取路径(跟toString方法一样 输出路径 不管路径是否存在)
   File file = new File("/Users/s/Desktop/Test/s.txt");
   String path = file.getPath();
   System.out.println(file);
   // 也可以 System.out.println(file.toString());

   // 获取文件名字
   String name = file.getName();
   System.out.println(name);

   // 获取文件长度(获取文件 占多少字节)
   // 英文占1个字节 中文占3个字节
   // 不同格式的文件 占的字节不同
   long lengh = file.length();
   System.out.println(length);
获取路径下所以文件及文件夹的名字/全路径
    File file = new File("/Users/s/Desktop/Test");
    //路径下的所有文件及文件夹的名字(一层) 以字符串形式
    String[] list = file.list();
    for(String string : list){
        System.out.println(string);
    }

    //获取该路径下文件夹的全路径(一层) 以文件对象形式
    File[] listFiles = file.listFiles();
    for(File file2 : listFiles){
        System.out.println(file2);
    }
练习
    从控制台输入一个字符串 该字符串是文件夹路径
    计算这个文件夹的大小

public class Demo {
        public static void main(String[] args) {
            // 测试
        File file = getDirFile();
        //计算文件夹大小
        long length = getDirLengthByFile(file);
        System.out.println(length);
        }

        // 输入路径判断是否是文件夹路径
        // 不是就重新输入
        public static File getDirFile(){
            Scanner scanner = new Scanner(System.in);
            //是就返回 不是就重新输入
            while(true){
                System.out.println("请输入一个文件夹的路径");
                String path = scanner.nextLine();
                // 利用输入的路径 创建文件对象 去判断
                File file = new File(path);
                // 判断
                if (!file.exists()){
                    System.out.println("输入的路径不存在");
                }else {
                    return file;
                }
            }
        }

        // 计算文件夹大小
        public static long getDirLengthByFile(File file){
            // 定义一个变量 保存文件夹大小
            long sum = 0;
            // 遍历每一个文件夹
            File[] listFiles = file.listFiles();
            for (subFiles.isFile()){
                sum = sum + subFiles.length;
            }else{
                // 不是文件 就是文件夹 继续遍历
                sum = sum +  getDirLengthByFile(subFiles);
            }
        }
        return sum;
    }    
    从控制台输入一个字符串 该字符串是文件夹路径 
    删除这个文件夹

    public class Demo {
        public static void main(String[] args) {
            // 测试
        File file = getDirFile();
        // 删除文件
        // 如果文件夹是空的 也可以删除
        boolean delete = file.delete();
        System.out.println(delete);
        }

        // 输入路径 判断是否是文件夹路径 是就返回 不是就重新输入
    public static File getDirFile() {
        Scanner scanner = new Scanner(System.in);
        //是就返回 不是就重新输入
        while (true) {
            System.out.println("请输入一个文件夹的路径");
            String path = scanner.nextLine();
            // 利用输入的路径 创建文件对象 去判断
            File file = new File(path);
            // 判断
            if (!file.exists()) {
                System.out.println("输入的路径不存在");
            }else if (file.isFile()) {
                System.out.println("输入的是一个文件,请重新输入");
            }else {
                return file;
            }
        }
    }
    /*
     * 根据文件夹路径 删除文件夹
     */
    public static void deleteDirByFile(File file) {
        // 遍历
        File[] listFiles = file.listFiles();
        for (File subFile : listFiles) {
            // 是文件 直接删除
            if (subFile.isFile()) {
                subFile.delete();
            }else {
                // 是文件夹 继续遍历 删除
                deleteDirByFile(subFile);
            }
        }
        // 传进来的文件夹里面的文件及文件夹在上面已经全被删除了
        // 这时 传进来的文件夹 已经空了
        // 可以直接删除
        file.delete();
    }
}    

http://blog.csdn.net/ssssssue

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值