zoukankan      html  css  js  c++  java
  • IO(Input Output)流__字节流

    续:

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

       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、关闭资源

       部分代码如下:

     1     FileOutputStream fos = null;
     2 
     3     FileInputStream fis = null;
     4 
     5     try {
     6 
     7       fos = new FileOutputStream("Demo.bmp");
     8 
     9       fis = new FileInputStream("DemoCopy.bmp");
    10 
    11       byte[] buf = new byte[1024];
    12 
    13       int len = 0;
    14 
    15       while((len = fis.read(buf)) != -1) {
    16 
    17         fos.write(buf, 0, len);
    18 
    19       }
    20 
    21     }catch() {
    22 
    23       throw new RuntimeException("复制文件失败");
    24 
    25     }
    26 
    27     finally {
    28 
    29       try{
    30 
    31         if(fis != null)
    32 
    33           fis.close();
    34 
    35       }catch(IOException e) {
    36 
    37         throw new RuntimeException("读取关闭失败");
    38 
    39       }
    40 
    41       try{
    42 
    43         if(fos != null)
    44 
    45           fos.close();
    46 
    47       }catch(IOException e) {
    48 
    49         throw new RuntimeException("写入关闭失败");
    50 
    51       }
    52 
    53     }

       字节流的缓存区:

          演示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,那么停止录入。

     1     InputStream in = Sytem.in;
     2     StringBuilder sb = new StringBuilder();
     3     int ch = 0;
     4 
     5     while(true) {
     6 
     7       int ch = in.read();
     8       if(ch == '
    ') 
     9 
    10         cntinue;
    11       if(ch == '
    ') {
    12 
    13         String s = sb.toString();
    14         if("over".equals(s)) 
    15           break;
    16         System.out.println(s.toUpperCase());
    17         sb.delete(0, sb.length());
    18       }
    19       else
    20         sb.append((char) ch);
    21       sb.append((char) ch) ;
    22     }

      读取转换流:

        //获取键盘录入对象。

          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();

     

  • 相关阅读:
    UnknownHostException: xxx,使用nacos远程调用服务(负载均衡)报错
    Failed to bind properties under 'logging.level' to java.util.Map<java.lang.String, java.lang.String>日志级别的问题
    JS 如何返回到父页面?多重跳转之后返回到初始页(父页面)?或者说返回父页面的父页面?
    绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程
    VS在release模式下进行调试
    visual studio 运行找不到dll库
    C++ 字符串格式化
    SWIG使用遇到的问题
    其他技术---域名中转
    mongoDB增删改查(命令行操作数据库)
  • 原文地址:https://www.cnblogs.com/jesonjason/p/5117765.html
Copyright © 2011-2022 走看看