黑马程序员技术交流社区

标题: IO流(第一弹) [打印本页]

作者: lgl48128244    时间: 2014-7-1 17:20
标题: IO流(第一弹)
  1.                                                        
  2.                                                                                                                                                                      <font size="6">   IO流       
  3.                                                                 </font>
  4. <font size="4">一、概念:
  5.                 流:流动、流向,从一端流向另一端,源头与目的地。
  6.                                 程序与文件|数据库|网络连接|数组,以程序为中心。
  7. 二、流的分类
  8.     1、流向:输入流与输出流
  9.                 2、数据:字节流:二进制,可以以一切文件,包括(doc,图片,文字,音频,视频等等)。
  10.                          字符流:只能处理纯文本
  11.     3、功能:节点:包裹源头
  12.              处理:增强功能,提高性能。
  13. 三、字节流与字符流(重点)与文件
  14.                 1、字节流:
  15.                                                 1)、输入流:InputStream  read(byte[] b) 、read(byte[] b, int off, int len)+close()
  16.                                                                                                 与源文件FileInputStream
  17.                                                                                                        
  18.                                                 2)、输出流:OutputStream write(byte[] b) 、write(byte[] b, int off, int len) +flush()+close()
  19.                                                                                                 与源文件FileOutputStream

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

  27. 1、举例:搬家:                        --->读取文件
  28.                 1)、关联房子                --->建立与文件的联系
  29.                 2)、选择搬家                --->选择对应流
  30.                 3)、搬家                                --->读取|写出
  31.                                 1、卡车大小        --->数组大小
  32.                                 2、运输                        --->读取|写出
  33.                 4)、完毕                                --->释放资源、关闭流
  34. 2、操作
  35.                 1)、建立联系
  36.                 2)、选择流
  37.                 3)、操作 数组大小+reader\writer
  38.                 4)、关闭流</font>
  39.                
  40. package com.jbit.io.byteio;

  41. import java.io.File;
  42. import java.io.FileInputStream;
  43. import java.io.FileNotFoundException;
  44. import java.io.IOException;
  45. import java.io.InputStream;

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

  57.         public static void main(String[] args) {
  58.                 // 1、建立关联
  59.                 File file = new File("D:/JAVA/mydoc/Study.txt");
  60.                 InputStream is = null;// 提升作用域
  61.                 try {
  62.                         // 2、选择输出流
  63.                         is = new FileInputStream(file);
  64.                         // 3、操作不断读取,缓冲数组。
  65.                         byte[] b = new byte[1024];
  66.                         // 接收实际读取大小
  67.                         int len = 0;
  68.                         // 循环读取
  69.                         while ((len = is.read(b)) != -1) {
  70.                                 /**
  71.                                  * 解读 String(byte[] bytes, int offset, int length)
  72.                                  * bytes -要解码为字符的 byte
  73.                                  * offset - 要解码的第一个 byte 的索引
  74.                                  * length - 要解码的 byte 数
  75.                                  */
  76.                                 // 输出字节数组转成字符串
  77.                                 String info = new String(b, 0, len);
  78.                                 System.out.println(info);
  79.                         }
  80.                 } catch (FileNotFoundException e) {
  81.                         e.printStackTrace();
  82.                         System.out.println("文件不存在");
  83.                 } catch (IOException e) {
  84.                         e.printStackTrace();
  85.                         System.out.println("文件读取失败!");
  86.                 } finally {
  87.                         if (is != null) {
  88.                                 try {
  89.                                         // 4、释放资源
  90.                                         is.close();
  91.                                 } catch (IOException e) {
  92.                                         e.printStackTrace();
  93.                                         System.out.println("关闭文件输入流失败!");
  94.                                 }
  95.                         }
  96.                 }
  97.         }
  98. }
复制代码







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