IO流:IO流用来处理设备之间的数据传输,上传文件和下载文件因为IO流操作的对象就是File文件,而且操作过程中会出现很多的异常,所以还要学习异常和File文件类
异常:Java程序在运行过程中出现的错误
Throwable是所有异常的顶层父类
异常分为两种:
1。Error严重问题:不用处理,因为问题非常严重,例如内存溢出
2。Exception非严重问题:可解决也可以不解决
(1):编译期异常:非RuntimeException(异常必须解决)发生在编译期间,必须处理,不处理,程序就无法运行,此时有两种处理方法
-1)抛出异常给调用者,谁调用谁就来处理 ,throws一般只抛出到 main方法 ,就要处理 -2)自己处理,使用try catch方式
(2):运行期异常:RuntimeException,可解决可不解决
发生在程序运行过程中
一旦发生异常JVM有自己默认的处理方式:打印异常信息,结束JVM
但一般不采用默认的处理方式,而是捕获异常自己去处理
try catch finally方法
try一般放一些有问题的代码
catch一旦try发生异常了,就会进入catc里面
finally不管前面是否执行,finally都会执行,一般做一些收尾工作,比如释放资源
package org.westos.demo2;
import java.util.Scanner;
public class MyTest {
public static void main(String[] args) {
int a=2;
int b=0;
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个整数");
a = sc.nextInt();
System.out.println("请输入第二个整数");
b = sc.nextInt();
try {//
一般放一些有问题的代码 System.out.println(a/b);
System.out.println("一般放一些有问题的代码");
}
catch (Exception e) {
//
一旦try发生异常了,就会进入catch里面
System.out.println("一旦try发生异常了,就会进入catch里面");
}
finally {
//finally 最后的 //finally 不管try里面遇不遇到异常
//finally 都会执行,一般做一些首尾工作,比如释放资源
sc.close();
}
}
}
throws方法
private static void hehe() throws ParseException {
String dateStr="2018-02-04";
SimpleDateFormat simp = new SimpleDateFormat("yyyy:MM-dd");
//编译期异常有处理方式.抛出异常给调用者(甩锅) //ParseException 解析异常
simp.parse(dateStr);
Throwable常见方法
getMessage()获取异常信息,返回字符串
toString()获取异常类名和异常信息,返回字符串
printStackTrace()获取异常类名和异常信息,以及异常出现在程序中的位置返回值void
throw和throws的区别
1。throws用在方法声明后面,跟的是异常类名,可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理throws表示出现异常的一种可能性,
并不一定会发生这些异常
2。throw用在方法体内,跟的是异常对象名,只能抛出一个异常对象名
这个异常对象可以是编译期异常对象,可以是运行期异常对象
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常
自定义异常
开发过程中,会遇到很多的问题,而有的问题并没有对应的异常与之对应,
所以就需要自己定义常量,而我们自己定义的常量必须继承自Exception
package org.westos.demo4;
//自定义异常类
public class MyException extends RuntimeException{
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
}
package org.westos.demo4;
import java.util.Scanner;
public class Test {
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的取款金额");
int money = sc.nextInt();
if(money>200) {
throw new MyException("余额不足");
}else {
System.out.println("取款成功");
}
}
}
当异常出现父子关系时
1.父类的方法如果没有抛出异常,那子类在重写父类的方法时也不能抛出异常
2.父类如果抛出了异常,子类也可以抛出异常,但是不能比父类的大,但是可以跟父类一样,或者比父类小
3.如果说父类抛出了多个异常,那子类只能抛出父类中的异常的 一个 或几个,但是不能抛出父类中没有的异常
File文件类:对目录和文件的封装
文件类的功能和方法
三种构造方法
File(String pathname):根据一个路径得到File对象
File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
File file = new File("D:\\abc");
File file4 = new File(file,"a.txt");
File file2 = new File("D:\\abc\\a.txt");
File file3=new File("D:\\abc","a.txt");
1。创建功能
public boolean createNewFile():创建一个新的文件 如果存在这样的文件,就不创建了
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
可以创建多层目录 当然也可以创建单层目录
如果创建文件或文件夹时没有写盘符路径,默认在项目路径下
相对路径:没有带盘符的路径
绝对路径:带有盘符的路径
2。删除功能
public boolean delete():删除文件或者文件夹
注意:删除文件夹时 这个文件夹是空文件夹 如果这个文件夹里面有文件,则不能删除
而且Java中的删除工作不走回收站,删除须谨慎
3。重命名功能
public boolean renameTo(File dest):把文件重命名为指定的文件路径
如果路径名相同,就是改名。
如果路径名不同,就是改名并剪切。
4。判断功能
public boolean isDirectory():判断是否是目录
public boolean isFile(): 判断是否是文件
public boolean exists(): 判断是否存在
public boolean canRead(): 判断是否可读
public boolean canWrite(): 判断是否可写
public boolean isHidden(): 判断是否隐藏
5。获取功能
public String getAbsolutePath(): 获取绝对路径
public String getPath():