Java 第九天 笔记

 

1   File类详解

(1)构造函数 

     File f = new File("文件路径")

    File f = new File("parent","child")

2创建一个文件夹

      //在工作空间目录下创建a.txt的文件夹 File f = new File("a"); f.mkdir();

     在G:\路径下创建一个a.txt的文件夹.如果已经有的话这不会重新创建

     File f = new File("G:\\a"); f.mkdir();

    如果路径写成\\a.txt,会在盘符下创建新的文件夹 File f = new File("\\a"); f.mkdir();

     在g盘下创建文件夹a,a 下创建一个b文件夹 File f = new File("G:\\a\\b"); f.mkdirs();

    //注意mkdirs(),创建多个文件夹

(3)new File 的区别:

   File f = new File("a");//此时f是文件夹 File f = new File("parent","child");

  //此时f是文件,parent文件夹下的文件 注意:此时会在盘符根   目录下创建文件夹 或文件 d File f = new File("", "d");     f.createNewFile(); // f.mkdir()

4,list()方法与listFiles()方法区别:

    f.list(); 返回String[]数组.里面包含了f一级目录下的文件和文件夹名.

   注意: 如果f:\\a\\b.那么b不会包含在数组中 f.listFiles() 返回File[]数组.里面包含了f一级目录下的文件和文件夹.

   注意: 如果f:\\a\\b.那么b不会包含在数组中

5,文件名过滤器 FilenameFilte

  • File[] fs = f1.listFiles(new FileFilter() {
  • /** * pathname 表示要被过滤的文件,注意:不是文件名 * 返ture 证明是符合条件的文件 */ @Override public boolean accept(File pathname)
  • { if (pathname.length() > 1024 * 1024 * 20) { return true; } return false; } });}

5  

文件一些常用方法:

<span style="color:#000000"><code>        f.<span style="color:#4f4f4f">delete</span>(); <span style="color:#880000"> //删除file</span>
        f.exists(); <span style="color:#880000"> //file是否存在</span>
        f.getName();<span style="color:#880000"> //得到file名字</span>
        f.isDirectory(); <span style="color:#880000"> //file是否是文件夹</span>
        f.isFile();   <span style="color:#880000"> //file是否是文件</span>
        f.<span style="color:#4f4f4f">length</span>();  <span style="color:#880000"> //file的长度</span></code></span>

6   Java提供了更加优秀的解决办法:异常处理机制。

异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。
Java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的,只要在Java程序中产生了异常,就会用一个对应类型的异常对象来封装异常,JRE就会试图寻找异常处理程序来处理异常。

Throwable类是Java异常类型的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别。JDK中内建了一些常用的异常类,我们也可以自定义异常。

7  Java异常的分类和类结构图

Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。

Throwable又派生出Error类和Exception类。

错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。

异常:Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。858860-20170911125844719-1230755033

总体上我们根据Javac对异常的处理要求,将异常类分为2类。

非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try…catch…finally)这样的异常,也可以不处理。对于这些异常,我们应该修正代码,而不是去通过异常处理器处理 。这样的异常发生的原因多半是代码写的有问题。如除0错误ArithmeticException,错误的强制类型转换错误ClassCastException,数组索引越界ArrayIndexOutOfBoundsException,使用了空对象NullPointerException等等。

检查异常(checked exception):除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)。在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。这样的异常一般是由程序的运行环境导致的。因为程序可能被运行在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,于是程序员就应该为这样的异常时刻准备着。如SQLException , IOException,ClassNotFoundException 等。

需要明确的是:检查和非检查是对于javac来说的,这样就很好理解和区分了。

   8   异常的概念

    Java异常是Java提供的用于处理程序中错误的一种机制,采用面向对象的方法处理异常。处理过程:

抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代码标该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE。

   捕获异常:JRE得到该异常,寻找相应的代码来处理该异常,JRE在方法的调用栈中查找,凑够生成异常的方法开始回溯,直到找到相应的异常处理代码为止。

   9  异常分类

       所有异常类对象都派生于Throwable类的一个实例。如果内置的异常不能够满足需要,还可以创建自己的异常类。

     unchecked 异常(一般在运行时不通过) 和checked异常 (一般在编译时 不通过)

10  异常处理模式

    try {

         语句。。。

    }catch(Exception e){ 

          语句。。。

     }finally{ 

          语句。。。。

   }

  11 try 语句指定一段代码,该代码就是一次捕获并处理的范围。在执行过程中当任意一条语句产生异常时,就会跳过该段后面的代码。代码中可能会产生抛出一种或者几种异常对象,它后面的catch语句分别对这些异常做相应的处理(当异常处理代码,结束以后不会回到try语句去执行尚未执行的代码)一个try至少含有一个catch或者finally 

 12 catch 语句块可以伴随一个或者多个catch语句块。用于处理可能产生的不同类型的异常。常用方法:toString方法。显示异常的类名和产生异常的原因。getmessage()只显示产生异常的原因,但是不显示类名。

  13   异常处理模块内含有return 语句  执行顺序  1  执行try catch 给返回值 2 执行finally 3  执行return。(finally 语句里面一般不含有return语句 否则会覆盖try里面的语句)。

 14  异常处理第二种方法:声明throws子句 当CHecked Exception产生时,不一定立刻处理它。可以再把它通过Throws抛出去。如果一个方法抛出多个已检查异常,就必须在方法首部列出所有异常,之间使用逗号隔开。

15 方法重写中的声明异常原则

子类声明的异常不能超出父类声明的范围:(1)父类没有声明异常,子类也不能(2)不可能抛出原有方法抛出异常类的父类或者上层类(3) 抛出的异常类型的数目不可以比原来的方法抛出的还多(不是只个数,而是指类型)。

16 手动抛出异常  throw new FileNotFoundException("..........");package testDate;
import java.io.File;
import java.io.FileNotFoundException;
public class TestReadFile {
    public static void main(String[] args) {
        File f=new File("d:/b.txt");
        if(!f.exists()){
            try{
                //手动抛出异常
                throw new FileNotFoundException("File can't be found !");
            }catch(FileNotFoundException e){
                e.printStackTrace();
            }
        }
    }
}

使用异常处理机制建议:要避免使用异常处理代替错误处理,这样会降低程序的清晰性,并且效率低下。

处理异常不可以代替简单的测试,只在异常情况下使用异常机制。不要进行小粒度的异常处理,应该应该将整个任务包含在一个try语句块内。异常往往在高层处理。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值