A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lgl48128244 初级黑马   /  2014-7-1 17:25  /  958 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文




                                                   IO流
              
      一、概念:
        流:流动、流向,从一端流向另一端,源头与目的地。
          程序与文件|数据库|网络连接|数组,以程序为中心。
      二、流的分类
          1、流向:输入流与输出流
        2、数据:字节流:二进制,可以以一切文件,包括(doc,图片,文字,音频,视频等等)。
                 字符流:只能处理纯文本
          3、功能:节点:包裹源头
                   处理:增强功能,提高性能。
      三、字节流与字符流(重点)与文件
        1、字节流:
            1)、输入流:InputStream  read(byte[] b) 、read(byte[] b, int off, int len)+close()
                  与源文件FileInputStream
                  
            2)、输出流:OutputStream write(byte[] b) 、write(byte[] b, int off, int len) +flush()+close()
                  与源文件FileOutputStream

  2、字符流:
      1)、输入流:Reader read(char[] cbuf)  、read(char[] cbuf, int off, int len) +close()
            与源文件FileReader
            
      2)、输出流:Writer write(char[] cbuf) 、write(char[] cbuf, int off, int len) +flush()+close()
                与源文件FileWriter
四、操作

1、举例:搬家:   --->读取文件
  1)、关联房子  --->建立与文件的联系
  2)、选择搬家  --->选择对应流
  3)、搬家    --->读取|写出
    1、卡车大小 --->数组大小
    2、运输   --->读取|写出
  4)、完毕    --->释放资源、关闭流
2、操作
  1)、建立联系
  2)、选择流
  3)、操作 数组大小+reader\writer
  4)、关闭流

  

    • package com.jbit.io.byteio;

      import java.io.File;
      import java.io.FileInputStream;
      import java.io.FileNotFoundException;
      import java.io.IOException;
      import java.io.InputStream;

      /**
      * 一、读取文件
      * 1、建立关联 File对象
      * 2、选择输入流 InputStream FileInputStream
      * 3、读取流 byte[] b = new byte[1024]+读取大小
      * 4、释放资源
      *
      * @author 李国梁
      *
      */
      public class demo01 {

              public static void main(String[] args) {
                      // 1、建立关联
      File file = new File("D:/JAVA/mydoc/Study.txt");
                      InputStream is = null;// 提升作用域
      try {
                              // 2、选择输出流
      is = new FileInputStream(file);
                              // 3、操作不断读取,缓冲数组。
      byte[] b = new byte[1024];
                              // 接收实际读取大小
      int len = 0;
                              // 循环读取
      while ((len = is.read(b)) != -1) {
                                      /**
                                       * 解读 String(byte[] bytes, int offset, int length)
                                       * bytes -要解码为字符的 byte
                                       * offset - 要解码的第一个 byte 的索引
      * length - 要解码的 byte 数
      */
                                      // 输出字节数组转成字符串
      String info = new String(b, 0, len);
                                      System.out.println(info);
                              }
                      } catch (FileNotFoundException e) {
                              e.printStackTrace();
                              System.out.println("文件不存在");
                      } catch (IOException e) {
                              e.printStackTrace();
                              System.out.println("文件读取失败!");
                      } finally {
                              if (is != null) {
                                      try {
                                              // 4、释放资源
      is.close();
                                      } catch (IOException e) {
                                              e.printStackTrace();
                                              System.out.println("关闭文件输入流失败!");
                                      }
                              }
                      }
              }
      }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马