java中IO流File类的常用方法学习记录

本文详细介绍了Java中File类的常用方法,包括文件的创建、删除、重命名,以及文件夹的创建、删除等操作。此外,还展示了如何判断文件类型、获取文件路径等。通过对这些方法的掌握,可以有效地进行文件和文件夹的基本管理。
package com.kj.test;

import java.io.*;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

/**
 * java中IO流File类的常用方法
 * 本文通过一个程序,详细解释java IO流File类的常用方法。基本上都是要熟悉掌握的方法。
 */
public class FileOperate {

    /**
     * 对文件/文件夹的基本操作
     */
    public static void main(String[] args) throws IOException {
        /**
         * 对文件的增删改查
         */
        // 假设随便设置一个路径
        File file = new File("D:/java.txt");

        // 创建文件,不存在就创建,存在的话就不创建。这是创建文件的必要步骤。
        boolean newFile = file.createNewFile();

        // 查询文件是否存在
        if (file.exists()) {
            System.out.println("文件存在");
        } else {
            System.out.println("文件不存在");
        }

        // 修改文件的名称,如果已经存在,则返回false
        boolean renameTo = file.renameTo(new File("D:/java2.txt"));
        if (renameTo) {
            System.out.println("文件重命名为:" + file.getAbsoluteFile());
        }

        // 删除文件,如果存在就会被删除
        boolean delete = file.delete();
        if (delete) {
            System.out.println("文件:" + file.getAbsolutePath() + " 被删除");
        }

        /**
         * 对文件夹的基本操作
         */
        // 任意定义一个文件夹路径
        File fileDir = new File("D:/java/jsp");

        // 增加文件夹,创建单层文件夹
        // fileDir.mkdir();

        // fileDir.mkdirs() 可以创建多层文件夹,如果存在则不会再创建
        boolean mkdirs = fileDir.mkdirs();
        if (mkdirs) {
            System.out.println("创建文件夹" + fileDir.getAbsolutePath() + "成功");
        } else {
            System.out.println("文件夹已存在");
        }

        // 文件夹的修改名称和删除,同文件的操作基本一样,但删除时要确保文件夹为空才能删除成功
        // 修改文件夹名称,默认修改最里面的子目录名称,如果要修改上级目录,则调用fileDir.getParentFile()

        boolean html = fileDir.renameTo(new File("D:/java/html"));
        if (html) {
            Optional<String> first = Arrays.stream(fileDir.getParentFile().list()).filter(fileName -> fileName.endsWith("html")).findFirst();
            System.out.println("修改文件夹名称为:" + fileDir.getParent() + File.separator + first.get());
        }
        boolean rename = fileDir.getParentFile().renameTo(new File("D:test"));
        if (rename) {
            String[] list = fileDir.getParentFile().getParentFile().list();
            Optional<String> first = Arrays.stream(list).filter(fileName -> fileName.endsWith("test")).findFirst();
            System.out.println("被修改的文件夹父目录名称为:" + fileDir.getParentFile().getParent() + first.get());
        }

        // 删除文件夹,保证文件夹里面为空
        boolean delete1 = fileDir.delete();
        if (delete1){
            System.out.println("删除文件夹成功:"+fileDir.getName());
        }

        /**
         * file的其他操作
         */
        // 判断一个file文件是文件还是文件夹
        if (file.isDirectory()){
            System.out.println(file.getName() + "是文件夹");
        } else if (file.isFile()){
            System.out.println(file.getName() + "是个文件,文件大小:" + file.length());
        }

        // getName获取文件名,只获取文件名,不包括文件的路径
        System.out.println("file name :"+file.getName()); // file name :java.txt

        // getPath获得文件路径,包括文件名字
        System.out.println("file path :" + file.getPath()); // file path :D:\java.txt

        // getAbsolutePath获取文件路径包括名称
        System.out.println("file getAbsolutePath: "+ file.getAbsolutePath()); // file getAbsolutePath: D:\java.txt

        // listFiles列出当前目录下的文件和子目录
        // getParentFile获取父文件,返回类型为File,getParent获取父目录路径,返回类型为String
        String parent = file.getParentFile().toString();
        String fileParent = file.getParent();
        File[] files = new File(fileParent).listFiles();
        for (File file1 : files){
            // 打印D盘所有文件和文件夹的名称
            System.out.println("D:\\ "+ file1.getName());
        }


        // renameTo 重命名文件或者剪切文件,在同一个目录下表示重命名,否则表示剪切,存在相同文件则不再剪切
        File file1 = new File("D:test.html");
        boolean newFile1 = file1.createNewFile();
        boolean copy  = file1.renameTo(new File("D:/test/copy.txt"));
        if (copy){
            System.out.println(file1 +",文件剪切成功");
        }
    }

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值