zoukankan      html  css  js  c++  java
  • 字节流

    |-- InputStream(读)

    |-- OutputStream(写)

     

    由于字节是二进制数据,所以字节流可以操作任何类型的数据,值得注意的是字符流使用的是字符数组char[]而字节流使用的是字节数组byte[]。下面来看一个字节流读写文件的简单例子。

    清单7,使用字节流读写文本文件代码   

    private static void test5(){ 

        FileOutputStream fos=null; 

        try{ 

            fos=new FileOutputStream("D:/test.txt"); 

            fos.write(0010);//写入二进制数据 

            fos.flush(); 

        }catch(IOException e){ 

             

        }finally{ 

            try{ 

                fos.close(); 

            }catch(IOException ex){ 

                 

            } 

        } 

        FileInputStream fis=null; 

        try{ 

            fis=new FileInputStream("D:/test.txt"); 

            //fis.available()是获取关联文件的字节数,即test.txt的字节数 

            //这样创建的数组大小就和文件大小刚好相等 

            //这样做的缺点就是文件过大时,可能超出jvm的内存空间,从而造成内存溢出 

            byte[] buf=new byte[fis.available()]; 

            fis.read(buf); 

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

        }catch(IOException e){ 

             

        }finally{ 

            try{ 

                fos.close(); 

            }catch(IOException ex){ 

                 

            } 

        } 

     

    清单8,使用缓冲区对一张图片进行复制代码   

    private static void test6(){ 

        BufferedOutputStream bos=null; 

        BufferedInputStream bis=null; 

        try{ 

            //前面已经说过了,缓冲对象是根据具体的流对象创建的,所以必须要有流对象  

            bis=new BufferedInputStream(new FileInputStream("E:\images\wo\1.jpg")); 

            //写入目标地址 

            bos=new BufferedOutputStream(new FileOutputStream("E:\test.jpg")); 

            byte[] buf=new byte[1024]; 

            while((bis.read(buf))!=-1){ 

                bos.write(buf); 

            } 

            bos.flush(); 

        }catch(IOException e){ 

            e.toString(); 

        }finally{ 

            try{ 

                if(bos!=null){ 

                    bos.close(); 

                } 

                if(bis!=null){ 

                    bis.close(); 

                } 

            }catch(IOException ex){ 

                ex.toString(); 

            } 

        } 

     

  • 相关阅读:
    从设计到实现,一步步教你实现Android-Universal-ImageLoader-缓存
    AsyncTask工作机制简介
    获取当前AppDelegate 正在显示的UIViewController
    Jqurey实现相似EasyUI的页面布局
    C++学习笔记(九):作用域和命名空间
    C++学习笔记(八):函数重载、函数指针和函数对象
    C++学习笔记(七):函数
    Stage3D学习笔记(一):3D术语简介
    C++学习笔记(六):复杂数据类型(string、容器和STL)
    C++学习笔记(五):指针和引用
  • 原文地址:https://www.cnblogs.com/yang-hao/p/6078279.html
Copyright © 2011-2022 走看看