续:

 ------->>>>字节流

   IntputStream   OutputStream

  需求:想要操作图片数据,就需要用到字节流。

  读写操作:

    FileOutputStream  FileInputStream

    <---写--->

    FileOutputStream fos = new FileOutputStream("fos.txt");

    fos.write("abcde".getBytes());

    fos.close();

  <---读--->

    FileInputStream fis = new FileInputStream("fos.txt");

    byte[] buf = new byte[fis.availabe()];  //定义一个刚刚好的缓冲区,不用再循环了。

    fis.read(buf);

    System.out.println(new String(buf));

    fis.colse();

  拷贝图片:

    思路:1、用字节读取流对象和图片关联;

       2、用字节写入流对象创建一个图片文件,用于存储获取到的图片数据;

         3、通过循环读写,完成数据的存储

       4、关闭资源

   部分代码如下:

     FileOutputStream fos = null;

     FileInputStream fis = null;

     try {

       fos = new FileOutputStream("Demo.bmp");

       fis = new FileInputStream("DemoCopy.bmp");

       byte[] buf = new byte[1024];

       int len = 0;

       while((len = fis.read(buf)) != -1) {

         fos.write(buf, 0, len);

       }

     }catch() {

       throw new RuntimeException("复制文件失败");

     }

     finally {

       try{

         if(fis != null)

           fis.close();

       }catch(IOException e) {

         throw new RuntimeException("读取关闭失败");

       }

       try{

         if(fos != null)

           fos.close();

       }catch(IOException e) {

         throw new RuntimeException("写入关闭失败");

       }

     }

   字节流的缓存区:

      演示mp3的复制,通过缓冲区。

      BufferedOutputStream

      BufferedInputStream

    public static void copy() throws IOException {

      BUfferedInputStream bufis = new BufferedInputStream(new FileInputStream("Demo.mp3"));

      BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream(DemoCopy.mp3));

      int by = 0;

      while((by = bufis.read()) != -1) {

        bufos.write(by);

      }

      bufos.close();  bufis.close();

    }

  附加小练习:自定义一个缓冲区;

    

 读取键盘录入:

    System.out :  对应的标准输出设备, 控制台

    System.in :  对于的标准输入设备: 键盘

   需求:通过键盘录入数据,当录入一行数据后,就将该行数据进行打印; 如果录入的数据是over,那么停止录入。

     InputStream in = Sytem.in;
    StringBuilder sb = new StringBuilder();
    int ch = 0;     while(true) {       int ch = in.read();
      if(ch == '\r')         cntinue;
      if(ch == '\n') {         String s = sb.toString();
        if("over".equals(s))
          break;
        System.out.println(s.toUpperCase());
        sb.delete(0, sb.length());
      }
      else
        sb.append((char) ch);
      sb.append((char) ch) ;
    }

  读取转换流:

    //获取键盘录入对象。

      InputStream in = System.in;

    //将字节流对象转成字符流对象,使用转换流。 InputStreamReader

      InputStreamReader isr = new InputStreamReader(in);

    //为了提高效率,将字符串进行缓冲区技术高效操作,使用BufferedReader

      BufferedReader bufr = new BufferedReader(isr);

    加强:BufferReader bufr = 

          new BufferReader(new InputStreamReader(System.in));

      String line = null;

      while((line = bufr.readLine()) != null) {

        System.out.println(line.toUpperCase());

      }

      bufr.close();

  写入转换流:

     BufferedWriter bufw =

         new BufferedWriter(new OutputStreamWriter(System.out));

     

     String line = null;

     While((line = bufr.readLine()) != null) {

      if("over".equals(line)) {

       break;

      bufw.writer(line.toUpperCase());       

      bufw.newLine();

      bufw.flush();

     }

     bufr.close();

 

IO(Input Output)流__字节流的更多相关文章

  1. IO(Input&Output)流の介绍

    1.导读 对于设备之间的流动(即写入数据或读出数据),Java专门用Java.io包进行操作.这些数据的流动便是我们所说的数据的输入输出流(IO流). 2.数据流的处理:字节流和字符流 数据的基本单位 ...

  2. JAVA input/output 流层次关系图

    在java中,input和output流种类繁多,那么它们之间是否有关系呢?答案是肯定的,其中使用到了设计模式,装饰模式 下图来自于HEAD FIRST 设计模式 装饰模式一章 下图来自网络博客:ht ...

  3. Java IO编程——字符流与字节流

    在java.io包里面File类是唯一 一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能够操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操作.而对于程序而 ...

  4. javaIO--数据流之IO流与字节流

    0.IO流 0.1.IO(Input Output)流的概念 Java中将不同设备之间的数据传输抽象为“流”:Stream设备指的是:磁盘上的文件,网络连接,另一个主机等等 按流向分:输入流,输出流: ...

  5. IO流(字节流,字符流)

    一,概述 IO流(input output):用来处理设备之间的数据. Java对数据的操作是通过流的对象. Java用于操作流的对象都在IO包中. 流是一组有顺序的,有起点和终点的字节集合,是对数据 ...

  6. JavaSE学习笔记(14)---File类和IO流(字节流和字符流)

    JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...

  7. Java基础(八)——IO流1_字节流、字符流

    一.概述 1.介绍 I/O是 Input/Output 的缩写,IO流用来处理设备之间的数据传输,如读/写文件,网络通讯等.Java对数据的操作是通过流的方式进行.java.io 包下提供了各种&qu ...

  8. java.io中流的操作:字节流、字符流

    java.io中流的操作:字节流.字符流(1)使用File类打开一个文件(2)通过字节流或字符流的子类指定输出的位置(3)进行读/写操作(4)关闭输入/输出 1.字节流:主要是byte类型数据,以by ...

  9. 【JAVA IO流之字节流】

    字节流部分和字符流部分的体系架构很相似,有四个基本流:InputStream.OutputStream.BufferedInputStream.BufferedOutputStream,其中,Inpu ...

随机推荐

  1. 如何判断list中是否包含某个元素

    在python中可以通过in和not in关键字来判读一个list中是否包含一个元素: str = ['s','i','m','o','n'] if 'e' in str: print("e ...

  2. uva 812 Trade on Verweggistan

    题意: 给w个货架, 每个货架上有bi个货物, 每次只能拿最上面的货物, 每个货物有个价值, 所有货物的售价均为10. 问:能获得的最大利润, 以及能获得这个利润需要多少个货物. (有多种组合时只需输 ...

  3. VIM一些常用命令,方法,配置

    配置文件地址 github 工具只是为了更好的工具,选择一种,坚持使用学习记忆,熬过瓶颈期就可以了. 现在我基本大的项目是IDE+vim 插件,写小代码是VIM. 常用的操作,便捷的方法 1.如何选中 ...

  4. SQLMAP系列教程

    1.SQLMAP安装及access注入: http://www.stronkin.com/en/CompHonorBig.asp?id=7   2.Mysql数据库注入 http://www.slib ...

  5. VLAN间单臂路由访问

    实验书上的拓朴图: 注意TRUNK端口和路由器子端口设置,可以承载不同的VLAN标签. 交换机(用2691加交换模块实现的): Building configuration... Current co ...

  6. 【BZOJ 1319】 Sgu261Discrete Rootsv (原根+BSGS+EXGCD)

    1319: Sgu261Discrete Roots Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 389  Solved: 172 Descriptio ...

  7. 李洪强漫谈iOS开发[C语言-029] - 关系运算符

  8. [转贴]Eclipse IDE for c++配置

    从工作到现在已经有快一年多没用过C/C++了,现在想重新捡起来,但是以前一直是在windows下面进行开发,使用最多的是Eclipse和Myeclipse,因为这些都是开源的软件,并不收费,所以现在也 ...

  9. Linux 下报错:A Java RunTime Environment (JRE) or Java Development Kit (JDK) must解决方案

    一.报错环境:在Linux mint下,前几天还用得很好的的eclipse,今天开机不知为什么这样. Linux 下报错:A Java RunTime Environment (JRE) or Jav ...

  10. for嵌套for ★

    namespace for嵌套for五角星{    class Program    {        static void Main(string[] args)        {         ...