异常注意事项 和 File

异常注意事项 重写
子类重写父类方法时(类实现接口也算在其内),子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)
如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集或者是子类异常,子类不能抛出父类没有的异常
如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,必须要处理,那么子类只能try,不能throws

io (input, output) 主角两个人, 内存和磁盘

File -> 文件 目标:操作磁盘中的文件
Directory -> 文件夹(目录)

创建功能 只支持创建文件, 不支持创建文件夹

 public boolean createNewFile()
        file.createNewFile();
public boolean mkdir();        make directory
        file.mkdir();

可以连续创建多层文件夹

 public boolean mkdirs()       
        file.mkdirs();

删除功能

 public boolean delete()

重命名功能

public boolean renameTo(File dest)

既是重命名, 也是移动, 后期, java第三阶段学习云服务器的时候, 其他的操作系统就是这样的, 没有重命名命令, 只有移动命令
移动命令既可以移动,也可以重命名

 file.renameTo(file2);

delete方法只能删除空文件夹, 或者是文件

File file = new File("D:\\java27\\2024-08-14\\代码\\javaio\\mp3");
        boolean result = file.delete();
        System.out.println("result = " + result);

file常用方法

	判断功能
 File file = new File("vip.txt");

        System.out.println("file.isDirectory() = " + file.isDirectory());
        System.out.println("file.isFile() = " + file.isFile());
        System.out.println("file.exists() = " + file.exists());
        System.out.println("file.canRead() = " + file.canRead());
        System.out.println("file.canWrite() = " + file.canWrite());
        System.out.println("file.isHidden() = " + file.isHidden());
  File file = new File("vip.txt");
        //基本获取功能
        //public String getAbsolutePath()
        System.out.println("file.getAbsolutePath() = " + file.getAbsolutePath());
        //public String getPath()  file构造器中输入的是什么, 就打印什么
        System.out.println("file.getPath() = " + file.getPath());
        //public String getName()
        System.out.println("file.getName() = " + file.getName());
        //public long length()
        System.out.println("file.length() = " + file.length());
        //public long lastModified()
        System.out.println("file.lastModified() = " + file.lastModified());
        Date date = new Date(file.lastModified());
        System.out.println("date = " + date);

判断文件后缀

 public static void main(String[] args) {
        File file = new File("mp3");

        //里面有一个方法等待我们重写, 这个代码的作用
        FilenameFilter filenameFilter = new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                if (name.endsWith(".jpg")){
                    return true;
                } else {
                    return false;
                }
            }
        };

        //MyNameFilter filenameFilter = new MyNameFilter();

        String[] subFileNames = file.list(filenameFilter);

        System.out.println(Arrays.toString(subFileNames));
    }

递归删除文件夹

class Demo23 {

    public static void main(String[] args) {
        File file = new File("mp3");

        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            files[i].delete();
        }

        file.delete();
    }
}

高级获取功能 文件夹独有, 获取文件夹下的子文件(包含子文件夹), 注意: 不包含, 子子文件

 File file = new File("mp3");
        //获取文件夹下的子文件名称, 组成一个数组
        String[] subFileNames = file.list();
        System.out.println(Arrays.toString(subFileNames));

        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            File fileNow = files[i];
            System.out.println("fileNow.getName() = " + fileNow.getName());
        }

递归删除文件夹

public class Demo30 {

    public static void main(String[] args) {
        deleteFile(new File("mp3"));
    }

    //将目标文件夹/删除文件 递归删除
    public static void deleteFile(File dstFile){
        //1. 如果是文件, 直接删除走人
        if (dstFile.isFile()) {
            System.out.println("当前是文件, 删除文件 -> " + dstFile.getName());
            dstFile.delete();
            return;
        }
        //2. 如果是文件夹
        File[] files = dstFile.listFiles();
        System.out.println("当前是文件夹, 正在遍历文件夹, 获取子文件并挨个删除");
        //  2.1 调用文件夹的listFile方法 并 遍历
        for (int i = 0; i < files.length; i++) {
            File fileNow = files[i];
            System.out.println("正在进入文件夹中, 删除其子文件 -> " + fileNow.getName());
            //  2.2 如果遍历到的file是文件, 则直接删除
            if (fileNow.isFile()) {
                fileNow.delete();
                System.out.println("成功删除子文件 -> " + fileNow.getName());
            } else {
                deleteFile(fileNow);
                System.out.println("成功删除子文件夹 -> " + fileNow.getName());
            }
            //  2.3 如果遍历到的是文件夹, 继续调用本方法
        }
        //  2.4 删除掉最上层的这个文件夹
        dstFile.delete();
        System.out.println("当前文件夹内容已被清空, 删除这个空文件夹 -> " + dstFile.getName());

    }
}

io流涉及到两个区域, 磁盘和内存

目标向vip.txt中写入数据

 FileOutputStream fos = new FileOutputStream("vip.txt", false);
        String name = "伟哥";
        byte[] bytes = name.getBytes();
        fos.write(bytes);
        fos.write(98);
        //表示只从数组的第3位开始向下, 取3个字节, 写入到磁盘文件中   比较鸡肋
        fos.write(bytes, 3, 3);

从vip.txt中读取出来数据

FileInputStream fis = new FileInputStream("vip.txt");
        byte[] bytes = new byte[9];
        fis.read(bytes);
        String vipName = new String(bytes);
        System.out.println("vipName = " + vipName);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值