JAVA基础学习笔记(六)

/ 0评 / 0
异常
===============================
  * 封装错误信息的对象
        
        错误信息:
          
          1)类型名称
          2)提示消息
          3)行号
  
  * 异常继承结构
      
      Throwable
        |- Error      系统级错误
        |- Exception  可修复的错误
            |- 其他Exception
            |- RuntimeException
                |- NullPointerException
                |- ArrayIndexOutOfBoundsException
                |- NumberFormatException
                |- ArithmeticException
                |- ClassCastException
                ...
      
      


  * 捕获异常
      
      try {
      
      } catch(AException e) {
        
      } catch(BException e) {
      
      } catch(父类型Exception e) {
          
      }
  
  
  * throws 
      
      添加异常抛出管道
      
      *)方法上存在默认管道,类型 RuntimeException
      *)RuntimeException 及其子类型异常,
        都能从默认管道抛出
      *)没有抛出管道,必须捕获
  
  
  * throw
      
      手动抛出异常
  
  * 异常包装
      
      捕获的异常对象,
      包装在另一种异常对象中,
      再抛出
      
      *)不能抛出的异常,包装成能抛出的异常
      *)多种异常类型,统一包装成一种类型
      
  
  * 自定义异常
      
      定义新的异常类型,
      来表示具体业务中的错误情况
  
        ZhuanZhangShiBaiException
        UsernameNotFoundException
        WrongPasswordException

        
io
===============================
  * Input / Output
    输入 / 输出
  
  * java.io 包
      
      File
      RandomAccessFile
      
      InputStream / OutputStream
      FileInputStream / FileOutputStream
      BufferedInputStream / BufferedOutputStream
      DataInputStream / DataOutputStream
      PrintStream
      ByteArrayInputStream / ByteArrayOutputStream
      ObjectInputStream / ObjectOutputStream
      
      Reader / Writer
      InputStreamReader / OutputStreamWriter
      FileReader / FileWriter
      BufferedReader / BufferedWriter
      PrintWriter



File
==========================================
  * 封装磁盘路径字符串
  * 可以封装文件路径,
    也可以封装目录路径
  * 可以封装不存在的路径
  
  创建对象
  -----------------------------------
    1.File f = new File("d:/abc/a.jpg");
    
    2.File f = new File("d:/abc/", "a.jpg");
  
  方法
  -----------------------------------
    *) 文件或目录的属性
        
        canRead() 
				canWrite() 
				canExecute() 
						是否可读可写可执行
				isHidden()					是否隐藏文件
				exists()						表示的路径是否存在
				getAbsolutePath() 	完整路径
				getName() 			文件名
				getParent()			父目录
				lastModified()	最后修改时间,毫秒值
				length()				文件字节量,对目录无效
				isDirectory()		是否文件夹
				isFile()				是否文件
				getTotalSpace()	空间总大小
				getFreeSpace()	可用空间
    
    *) 文件或目录操作
        
				createNewFile()	创建文件
				delete()				删除文件或“空目录”
				mkdir()					创建单层目录
				mkdirs()				创建多层目录
				renameTo()			改名、移动
				
				*) 创建删除重命名方法返回 boolean,表示操作是否成功
				
				File.createTempFile(前缀,  后缀)		在系统临时目录创建临时文件

    *) 文件列表
    
				list()			返回 String[],包含子文件、子目录名称
				listFiles()	返回 File[],包含子文件、子目录的 File 对象
						
				list(FilenameFilter)
				listFiles(FilenameFilter)
				listFiles(FileFilter)
										
										只列出符合过滤条件的文件、目录,
										参数: 外接的过滤器

    
  
 
RandomAccessFile
===============================================
  * 用来读写文件
  * 将文件中的字节数据,
    当做数组,用下标访问字节值
  
  创建对象
  ---------------------------------------
    RandomAccessFile raf = 
      new RandomAccessFile(文件, "r");
    
    RandomAccessFile raf = 
      new RandomAccessFile(文件, "rw");
  
  方法
  ---------------------------------------
    write(int b)
      int四个字节中,只输出末尾的一个字节
      [1][2][3][4] --> [4]
    
    write(byte[] buff)
      输出数组中全部字节值
    
    write(byte[] buff,int from,int length)
      输出数组中从 from 开始的 length 个
    
    read()  
      读取下标位置的一个字节值,
      再补3个0字节,转成 int
      [4] --> [1][2][3][4]
      
      读取结束,再读取,返回 -1
      
    read(byte[] buff)  
      按数组容量读取一批字节值放入数组
      返回这一批的字节数量
      
      读取结束,再读取,返回 -1

    seek(int position)
      定位下标到指定位置
    
    getFilePointer()
      获得当前下标所在的位置
    
    
    writeInt(int i)       输出int的四个字节
    writeDouble(double d) 输出double的八个字节
    ...
    writeUTF(String s)
      先输出两个字节表示字符串的字节长度
      再输出字符串的这些字节值
    
    readInt()     读取四个字节转成int
    readDouble()  读取八个字节转成double
    ...
    readUTF()
      先读取两个字节来确定字符串的字节长度,
      再读取这些字节转成 String

      *)读取结束再读取,
        会出现异常 EOFException
          
          EOF - End Of File

  
流 Stream
=========================================
  * 将字节数据读写,抽象成数组在管道中流动
  * 单向流动,
    输入流只能用来读取数据;
    输出流只能用来输出数据.
  * 顺序从头到尾流动,
    不能跳转
  

InputStream / OutputStream
=========================================
  * 字节流的抽象父类
  
  方法
  --------------------------------------
    OutputStream
    --------------------------------
      write(int b)
      write(byte[] buff)
      write(byte[] buff,int from,int length)
      flush() 刷出缓存数据
    
    InputStream
    --------------------------------
      read()
      read(byte[] buff)
      available() 剩余的可读取字节量
    



FileInputStream / FileOutputStream
========================================
  * 直接与文件相接,
    读写文件中的字节数据
  
  创建对象
  ---------------------------------
    1.FileOutputStream out = 
        new FileOutputStream(文件路径);
        
        不管文件是否存在,
        都会新建空文件

    2.FileOutputStream out = 
        new FileOutputStream(文件路径, true);
        
        如果文件不存在,新建;
        如果文件已经存在,追加。


练习
============================================
  1.
    求目录总大小
    
    
    
     |- b
     |- c
     |- 
         |- d
         |- f
         |- 
             |- h
             |- i

  2.
    文件加密、解密

  3.
    BMP 图片
    前 54 个字节是 bmp 格式信息
    第 19 到 22 四个字节,是图片宽度值
    第 23 到 26 四个字节,是图片高度值
    
  4.
    文件复制

评论已关闭。