黑马程序员技术交流社区

标题: java基础IO流 [打印本页]

作者: 王博21131    时间: 2015-12-19 23:04
标题: java基础IO流
整合两个: SequenceInputStream(InputStream, InputStream)
整合多个: SequenceInputStream(Enumeration)
Enumeration<InputStream> en = v.elements();                               
创建对象: new ByteArrayOutputStream()
          写出数据: write(int), write(byte[])
          获取数据: toByteArray()
  RandomAccessFile概述
          RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。
          支持对随机访问文件的读取和写入。

  B:read(),write(),seek()
序列化 写出: new ObjectOutputStream(OutputStream), writeObject()
反序列化 读取: new ObjectInputStream(InputStream), readObject()
IO流(加上id号)
要写出的对象必须实现Serializable接口才能被序列化  不用必须加id号
什么是数据输入输出流
  DataInputStream, DataOutputStream可以按照基本数据类型大小读写数据
  例如按Long大小写出一个数字, 写出时该数据占8字节. 读取的时候也可以按照Long类型读取, 一次读取8个字节.
DataOutputStream(OutputStream), writeInt(), writeLong()
  DataInputStream(InputStream), readInt(), readLong()
什么是打印流
该流可以很方便的将对象的toString()结果输出, 并且自动加上换行, 而且可以使用自动刷出的模式
  System.out就是一个PrintStream, 其默认向控制台输出信息
  打印: print(), println()
          自动刷出: PrintWriter(OutputStream out, boolean autoFlush, String encoding)
          打印流只操作数据目的
.什么是标准输入输出流
          System.in是InputStream, 标准输入流, 默认可以从键盘输入读取字节数据
          System.out是PrintStream, 标准输出流, 默认可以向Console中输出字符和字节数据
  2.修改标准输入输出流
          修改输入流: System.setIn(InputStream)
          修改输出流: System.setOut(PrintStream)
          IO流两种方式实现键盘录入)
  A:BufferedReader的readLine方法。
          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  B:Scanner
  A:Properties的特殊功能
          public Object setProperty(String key,String value)
          public String getProperty(String key)
          public Enumeration<String> stringPropertyNames()
         字节流的抽象父类:
                  InputStream
                  OutputStream
          字符流的抽象父类:
                  Reader
                  Writer               
read()一次读取一个字节
read()方法读取的是一个字节,为什么返回是int,而不是byte
  
                因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到111111111
                那么这11111111是byte类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收,如果11111111会在其前面补上
                24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型
write()一次写出一个字节
FileInputStream读取
  FileOutputStream写出
  int read(byte[] b):一次读取一个字节数组
          write(byte[] b):一次写出一个字节数组
          available()获取读的文件所有的字节个数
write(byte[] b)
  write(byte[] b, int off, int len)写出有效的字节个数
B.BufferedInputStream
          BufferedInputStream内置了一个缓冲区(数组)
          从BufferedInputStream中读取一个字节时
BufferedOutputStream
          BufferedOutputStream也内置了一个缓冲区(数组)
flush()方法
          用来刷新缓冲区的,刷新后可以再次写出
  close()方法
          用来关闭流释放资源的的,如果是带缓冲区的流对象的close()方法,不但会关闭流,还会再关闭流之前刷新缓冲区,关闭后不能再写出
  通过API查看Throwable
          Error
                  服务器宕机,数据库崩溃等
          Exception
  Throwable
                  Error       
                  Exception
                          RuntimeException
异常处理的两种方式
  a:try…catch…finally
  try catch
try catch finally
  try finally
b:throws




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2