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

            } 

        } 

     

  • 相关阅读:
    Java Socket
    路由器和交换机的区别
    OSI七层协议
    traceroute命令
    DNS递归和迭代原理
    出栈入栈顺序问题
    A记录、CNAME记录、MX记录
    DNS解析原理
    RAID磁盘阵列0、1、5、10
    http状态码
  • 原文地址:https://www.cnblogs.com/yang-hao/p/6078279.html
Copyright © 2011-2022 走看看