JavaSE(13)(异常和文件类)

异常类:
package zz.itheima.exception_io;

import java.util.Scanner;


//异常类:
public class ExceptionDemo {

//  如果在catch块中有return语句,那么finally块还会执行吗?执行的顺序呢?
    public static int textFinally(){
        try {
            int j = 10 / 0;  //new ArithmeticException();
        } catch (Exception e) {
            return 1;//这个return是为了跳出整个方法
        }finally{
            System.out.println("如果有return语句,看是否执行fanally块?");
            return 0;//这个return 为为了return 方法的返回类型int
        }
    }


    public static void main(String[] args) {

        System.out.println(textFinally());//如果有return语句,看是否执行fanally块? 0,事实证明无论如何都要执行finally块。
        //下标越界异常
        int []  arr = {1,2,3};
        try {
            System.out.println(arr[1]);
        } catch (Exception e) {
            System.out.println("如果没有异常看看这句话是否输出了?");//事实证明如果没有异常,就不输出了。只有存在异常了才执行catch块中的代码。
            e.printStackTrace();
        }
        // 第一种情况:try中没有产生异常  会跳过catch继续往下执行
        // 第二种情况:try中产生了异常   接下来先执行catch,然后再往下执行
        // 第三种情况:捕捉时类型跟抛出的异常对象的类型不一致  程序中断
        //空指针异常
//      String s = null;
//      System.out.println(s.length());
        //数学运算异常
        Scanner sc = new Scanner(System.in);
        try {
            System.out.println("请输入第一个整数");
            int n1 = sc.nextInt();
            System.out.println("请输入第二个整数");
            int n2 = sc.nextInt();
            System.out.println(n1 / n2);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("必须输入数字!");//自定义异常提示信息
        } finally{
            //这里一般用来释放一些资源,比如IO和数据库
            System.out.println("fnally code");
        }

    }

}
自定义异常:
package zz.itheima.exception_io;
public class SaxException extends Exception {

    public SaxException(){
        super("性别必须是男或者女!");
    }
}
声明异常:
package zz.itheima.exception_io;

import java.util.InputMismatchException;
import java.util.Scanner;

public class TestThrows {

    public static void testNull(String s)throws NullPointerException{
        System.out.println(s.length());
    }
    public static void setSex()throws InputMismatchException,SaxException{
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入性别:");
        String sex = sc.nextLine();
        if (!sex.equals("男")&&!sex.equals("女")) {
            throw new SaxException();
        }
    }
    public static void main(String[] args) {
        try {
            testNull(null);
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            setSex();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
文件:
package zz.itheima.exception_io;

import java.io.File;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;

public class TestFile {

    public static void main(String[] args) {
        //测试File类(文件)
        System.out.println("得到系统当前的分隔符为:"+File.separator);
        File f = new File("E:"+File.separator+"1.txt");//得到文件类对象
        if (f.exists()) {//判断文件是否存在
            System.out.println("存在");
        }else {
            try {
                //创建新文件
                f.createNewFile();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //把毫秒值转换成日期格式
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(f.lastModified());//获取文件最后修改日期,文件最后修改日期是毫秒值
        Date d = c.getTime();
        DateFormat df = DateFormat.getDateTimeInstance();
        System.out.println(df.format(d));
        //重命名
        f.renameTo(new File("E:\\2.text"));
        //是否只读
        System.out.println(f.canRead());
        //文件内容长度
        System.out.println(f.length());
        //文件路径
        System.out.println(f.getPath());
        //是不是文件
        System.out.println(f.isFile());
        //删除文件
        f.delete();
    }

}
文件夹:
package zz.itheima.exception_io;

import java.io.File;

public class TestDir {

    public static void main(String[] args) {
        //测试File类(文件夹或者目录)
        File f = new File("E:\\aaa\\bbb");
        if (f.exists()) {//文件夹是否存在
            System.out.println("存在");
        }else {
            f.mkdirs();//创建多级目录
        }
        System.out.println(f.isDirectory());//是否是文件夹或者(目录)
        System.out.println(f.getName());//获取文件夹名称
        f.renameTo(new File("e:\\bbb\\ccc")); 
        File files = new File("E:\\360Downloads");
        File[] temp = files.listFiles();//获取某文件夹下的所有文件(File对象)
        for (int i = 0; i < temp.length; i++) {
            System.out.println(temp[i].getName());
        }
        System.out.println("***********************");
        String[] names = files.list();//获取某文件夹下的所有文件名称(String)
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
        File file = new File("E:\\ee");
        file.delete();//只能删除空的文件夹
    }
}
过滤器:
package zz.itheima.exception_io;

import java.io.File;
import java.io.FilenameFilter;
//字节码文件过滤器
public class ClassFilter implements FilenameFilter{

    @Override
    public boolean accept(File dir, String name) {
        if (dir.exists()&&dir.isDirectory()) {
            if (name.endsWith(".class")) {
                return true;
            }else {
                return false;
            }
        }else {
            return false;
        }
    }

}
测试过滤器:
package zz.itheima.exception_io;

import java.io.File;

public class TestClassFilter {

    public static void main(String[] args) {
        //测试classFilter过滤器
        File file = new File("D:\\demo");
        String [] names = file.list(new ClassFilter());
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }

    }

}
例子一:
package zz.itheima.exception_io;

import java.io.File;

public class Demo1 {

    public static void main(String[] args) {
        //在你电脑硬盘的某个地方新建一个文本文件(随意命名),然后输出该文件的路径,然后把名字改为java.txt,然后删掉该文件
        File f = new File("E:"+File.separator+"hello.txt");
        try {
            if (f.exists()==false) {
                //如果不存在就创建新文件
                f.createNewFile();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(f.getPath());
        f.renameTo(new File("E:"+File.separator+"java.txt"));
        System.out.println(f.getPath());
//      判断你电脑硬盘上某个文件是否存在,是否只读,并输出文件大小
        File f1=new File("e:"+File.separator+"1.txt");
        if(f1.exists())
        {
            if(f1.canWrite()==false)
                System.out.println("只读");
            else
                System.out.println("可写");

            System.out.println(f1.length());
        }
        else {
            System.out.println("不存在");
        }

    }

}
例子二:
package zz.itheima.exception_io;

import java.io.File;

public class Demo2 {

    public static void main(String[] args) {
//      在你电脑的E盘创建一个名为java的文件夹
        File file = new File("E:\\java");
        if (file.exists()==false) {
            file.mkdir();
        }
//      输出你电脑上某个文件夹的名字,并输出该文件夹下所有文件的名字
        File ppts=new File("e:\\ppts");
        File[] temp=ppts.listFiles();
        for (File file1 : temp) {
            System.out.println(file1);
        }

        String[] str=ppts.list();
        for (String string : str) {
            System.out.println(string);
        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值