Java基础学习摘要之异常、IO流、File类

异常

异常的基类:Throwable

严重问题:Error
        内存溢出 StackOverflowError
        创建对象 OutOfMemoryError
非严重问题:Exception
        编译时异常:  非RuntimeException
        运行时异常:  RuntimeException

JVM默认是如何处理异常的?

    main函数收到这个问题时,有两种处理方式:
    a:自己将该问题处理,然后继续运行
    b:自己没有针对的处理方式,只有交给调用main的jvm来处理
    jvm有一个默认的异常处理机制,就将该异常进行处理.
    并将该异常的名称,异常的信息.异常出现的位置打印在了控制台上,同时将程序停止运行

处理异常的两种方法:

a.try{...}catch{...}catch{...}...
    注:多个异常间是平级关系
b.throws

Throwable的几个常见方法:

    a:getMessage():             获取异常信息,返回字符串。
    b:toString():               获取异常类名和异常信息,返回字符串。
    c:printStackTrace():            获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void

主动抛出异常

throw new 异常对象(); // 只能是Exception或是Error的子类对象

throws和throw的区别:

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

finally关键字:控制的语句体一定会执行

如何使用异常处理:

    原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这是用throws
    区别:
        后续程序需要继续运行就try
        后续程序不需要继续运行就throws

    如果JDK没有提供对应的异常,需要自定义异常

自定义异常

创建异常类
class MyException extends Exception{ // 检查异常
}
class MyException extends RuntimeException { // 未检查异常
}

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 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数组 

IO流

分类:

按流向:
        输入流----读入数据
        输出流----写出数据
按操作的数据类型:
    字节流
        字节输入流-----FileInputStream
                      BufferedInputStream
                      ByteArrayInputStream
        字节输出流-----FileOutputStream
                      BufferedOutputStream
                      ByteArrayOutputStream           
    字符流
        Reader----InputStreamReader
                  BufferedReader
                  FileReader
        Writer----OutputStreamWriter
                  PrintWriter

猜你喜欢

转载自blog.csdn.net/Eternity_y/article/details/81606773