IO流(一)

1:异常(理解)
(1)程序出现的不正常的情况
(2)异常的体系:
Throwable
|--Error 严重问题,我们不处理。这种问题一般都是很严重的,比如说内存溢出。
|--Exception 问题:
  |--RuntimeException 运行期异常,我们需要修正代码
  |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过
(3)异常的处理:
 A:JVM的默认处理
  把异常的名称,原因,位置等信息输出在控制台,但是程序不能继续执行。
 B:自己可以处理
  a:try...catch...finally
  自己编写处理代码,后面的程序可以继续执行。
  b:throws
  把自己处理不了的,在方法上声明,告诉调用者,这里有问题。

try...catch...finally的处理格式:

try {
     可能出现问题的代码;
     }catch(异常名 变量) {
         针对问题的处理;
     }finally {
         释放资源;
 }
 
变形格式:
 try {
     可能出现问题的代码;
     }catch(异常名 变量) {
         针对问题的处理;
 }    

  注意:
  A:try里面的代码越少越好;
  B:catch里面必须有内容,哪怕是给出一个简单的提示。

 

JDK7出现了一个新的异常处理方案:

try{
     
    }catch(异常名1 | 异常名2 | ... 变量 ) {
             ...
}    

 注意:这个方法虽然简洁,但是也不够好。
  A:处理方式是一致的。(实际开发中,好多时候可能就是针对同类型的问题,给出同一个处理)
  B:多个异常间必须是平级关系

 


(4)面试题
 A:编译期异常和运行期异常的区别?
  编译期异常:Java程序必须显示处理,否则程序就会发生错误,无法通过编译。
  运行期异常:无需显示处理,也可以和编译时异常一样处理。
 B:throw和throws是的区别
 throw:

  • 用在方法体内,跟的是异常对象名
  • 只能抛出一个异常对象名;
  • 表示抛出异常,由方法体内的语句处理
  • throw则是抛出了异常,执行throw则一定抛出了某种异常。

 throws:

格式:
  throws 异常类名

  • 用在方法声明后面,跟的是异常类名
  • 可以跟多个异常类名,用逗号隔开;
  • 表示抛出异常,由该方法的调用者来处理
  • throws表示出现异常的一种可能性,并不一定会发生这些异常。

(5)finally关键字及其面试题
 A:finally用于释放资源,它的代码永远会执行。
 B:面试题
  a:final,finally,finalize的区别?

  final:最终的意思,可以修饰类,成员变量,成员方法。
    修饰类,类不能被继承;
    修饰变量,变量是常量;
    修饰方法,方法不能被重写。
  finally:是异常处理的一部分,用于释放资源。
    一般来说,代码肯定会执行,特殊情况:在执行到finally之前jvm退出了
  finalize:是Object类的一个方法,用于垃圾回收。


  b:如果在catch里面有return,请问finally还执行吗?如果执行,在return前还是后
  会,前。

 C:异常处理的变形

  • try...catch...finally
  • try...catch...
  • try...catch...catch...
  • try...catch...catch...fianlly
  • try...finally

(6)自定义异常
  继承自Exception或者RuntimeException,只需要提供无参构造和一个带参构造即可。
(7)异常的注意实现

 1:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)。
 2:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常。
 3:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws。

2:File(掌握)
(1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件。
(2)构造方法

1.File file = new File("e:\\demo\\a.txt");
2.File file = new File("e:\\demo","a.txt");

3.File file = new File("e:\\demo");
File file2 = new File(file,"a.txt");


(3)File类的功能
A:创建功能

  • public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
  • public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
  • public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来

B:删除功能

  • public boolean delete()
  • 1:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
  • 2:Java中的删除不走回收站。
  • 3:要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹

C:重命名功能

  • public boolean renameTo(File dest)
  • 如果路径名相同,就是改名。
  • 如果路径名不同,就是改名并剪切。
  • 路径以盘符开始:绝对路径 c:\\a.txt
  • 路径不以盘符开始:相对路径 a.txt

D:判断功能

  • public boolean isDirectory():判断是否是目录
  • public boolean isFile():判断是否是文件
  • public boolean exists():判断是否存在
  • public boolean canRead():判断是否可读
  • public boolean canWrite():判断是否可写
  • public boolean isHidden():判断是否隐藏

E:获取功能

  • public String getAbsolutePath():获取绝对路径
  • public String getPath():获取相对路径
  • public String getName():获取名称
  • public long length():获取长度。字节数
  • public long lastModified():获取最后一次的修改时间,毫秒值

F:高级获取功能

  • public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
  • public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组

G:过滤器功能

  • public String[] list(FilenameFilter filter)
  • public File[] listFiles(FilenameFilter filter)

(4)案例:
 A:输出指定目录下指定后缀名的文件名称
  a:先获取所有的,在遍历的时候判断,再输出
  b:先判断,再获取,最后直接遍历输出即可
 B:批量修改文件名称

posted @ 2018-05-24 21:38  要死要活的程序猿啊  阅读(164)  评论(0编辑  收藏  举报