异常与File类

33 篇文章 0 订阅
30 篇文章 0 订阅

异常

异常:是Java程序在运行过程中出现的错误。
分类:编译时异常: 非RuntimeException、运行时异常: RuntimeException
在这里插入图片描述
Java默认异常处理方式
1、自己将该问题处理,然后继续运行
2、自己没有针对的处理方式,只有交给调用main的jvm来处理

try…catch…finally

捕获异常:使用 try 和 catch 关键字捕获异常

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}

多重捕获:一个 try 代码块后面跟随多个 catch 代码块

try{
   // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}finally{
		释放资源;
}

throws/throw 关键字

throws
1、用在方法声明后面,跟的是异常类名,可以跟多个异常类名,用逗号隔开;
2、表示抛出异常,由该方法的调用者来处理;
3、throws表示出现异常的一种可能性,并不一定会发生这些异常
throw
1、用在方法体内,跟的是异常对象名,只能抛出一个异常对象名;
2、这个异常对象可以是编译期异常对象,可以是运行期异常对象;
3、表示抛出异常,由方法体内的语句处理,执行throw则一定抛出了某种异常

import java.io.*;
public class className
{
   public void withdraw(double amount) throws RemoteException,
                              InsufficientFundsException
   {
       // Method implementation
   }
   //Remainder of class definition
}

声明自定义异常
1、所有异常都必须是 Throwable 的子类。
2、写一个检查性异常类,需要继承 Exception 类。
3、写一个运行时异常类,需要继承 RuntimeException 类

class MyException extends Exception{
}

final、finally和finalize的区别
1、final: 是状态修饰符, 可以用来修饰类 , 变量 , 成员方法.;被修饰的类不能被子类继承, 修饰的变量是一个常量不能被再次赋值,修饰的方法不能被子类重写
2、finally:用在try…catch…语句中 , 释放资源 ,始终被执行(JVM不能退出)
3、inalize: Obejct类中的一个方法,用来回收垃圾
异常注意事项

1、子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类,不抛出异常也可以;
2、父类抛出了多个异常,子类重写父类时,子类不能抛出父类没有的异常,不抛出异常也可以;
3、被重写的方法没有异常抛出,则子类的方法不可以抛出异常;此时子类方法内有异常发生,那么子类只能try,不能throws

File类

构造方法

1、File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
2、File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象

常用方法

//创建功能:
    public boolean createNewFile():创建一个新的文件 如果存在这样的文件,就不创建了
	public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了 注意这个方法只能创建单层目录 如果创建多层目录得一层一层创建
	public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来 可以创建多层目录 当然也可以创建单层目录
	相对路径:没有带盘符的路径
	绝对路径:带有盘符的路径
//删除功能:
	public boolean delete():删除文件或者文件夹 
//重命名功能:
	public boolean renameTo(File dest):把文件重命名为指定的文件路径
//判断功能:
	public boolean isDirectory():	判断是否是目录
	public boolean isFile():		判断是否是文件
	public boolean exists():		判断是否存在
	public boolean canRead():		判断是否可读
	public boolean canWrite():		判断是否可写
	public boolean isHidden():		判断是否隐藏
	public boolean isAbsolute();    判断是否使用的是绝对路径
//获取功能:
	public String getAbsolutePath():	获取绝对路径
	public String getPath():		获取相对路径
	public String getParent()   返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
    public File getParentFile()  返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 
	public long getTotalSpace()  返回此抽象路径名指定的分区大小。 返回总容量 单位字节
	public long getFreeSpace()   返回此抽象路径名指定的分区中未分配的字节数。返回剩余容量 单位字节
	public String getName():		获取名称
	public long length():			获取长度。字节数
	public long lastModified():		获取最后一次的修改时间,毫秒值
	public String[] list():			获取指定目录下的所有文件或者文件夹的名称数组
	public File[] listFiles():		获取指定目录下的所有文件或者文件夹的File数组 

程序小练习

1、需求:从银行取钱,发现钱不够,通过自定义异常给出提示。
public class test {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入金额");
        int money=1000;
        int n=sc.nextInt();
        if (n>money){
            throw  new yuebuzuException("余额不足哦");
        }else {
            money-=n;
            System.out.println("还剩"+money+"元");
        }

    }
}
class yuebuzuException extends RuntimeException{
    public yuebuzuException(String message) {
        super(message);
    }
}
2、需求: 修改指定目录下 所有文件的名称
如: 
E:\resource\各种专治\[www-itcast-cn]专治各种疼痛01.mp4
E:\resource\各种专治\[www-itcast-cn]专治各种疼痛02.mp4
E:\resource\各种专治\[www-itcast-cn]专治各种疼痛03.mp4
....
修改成
E:\resource\各种专治\专治各种疼痛01.mp4
E:\resource\各种专治\专治各种疼痛02.mp4
E:\resource\各种专治\专治各种疼痛03.mp4
...
public class test1 {
    public static void main(String[] args) throws IOException {

        File file = new File("C:\\resource");
        remove(file);
    }

    private static void remove(File file) {
        File[] files = file.listFiles();
        for (File f1 : files) {

            if (f1.isFile()&&f1.getName().endsWith("mp4")) {
                System.out.println(f1.getPath());
              String s=f1.getName().substring(f1.getName().lastIndexOf("专"));
                System.out.println(s);
                File file1 = new File("C:\\resource\\各种专治\\"+s);
                f1.renameTo(file1);
            } else {
             remove(f1);
            }
        }
    }

}
package com.file.cn;

import java.io.File;

public class test1 {
    public static void main(String[] args) {

3、需求:判断E盘demo目录下是否有后缀名为.jpg的文件,如果有将他们的后缀名,改成 .png
        
        File file = new File("D:\\demo");
        File[] files = file.listFiles();
        System.out.println(files.length);
        for (File file1 : files) {

            if (file1.isFile()&&file1.getName().endsWith("jpg")){
                int n=file1.getName().length()-3;
                String a=file1.getName().substring(0,n)+"png";
                File file2 = new File("D:\\demo\\"+a);
                file1.renameTo(file2);
                System.out.println(file1.getName().substring(0,n)+"png");

            }
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值