zoukankan      html  css  js  c++  java
  • NET中级课--文件,流,序列化1

    1.对于机器的角度来看,任何文件都是二进制的0和1.

    2.   :bit,一个1或0就是1位。

         字节:byte,每8位一个字节。一个字节的范围就是00000000到1111111,换成10进制就是0到255.

    字节数组: 通常文件由许多字节构成,则需定义一个字节数组。

    3.流:举例--将图片1.bmp从c盘复制到d盘。

           复制的程序运行在内存中,而文件在磁盘上。怎么办?实际上需要一个东西将两者连接起来,流就是这个桥梁。

      字节数组所代表的文件通过流写到内存中。 通过上述过程明确流的作用:与应用程序外部的数据进行交换(数据传输)。

               分类:文件流filestream   网络流networstream  等。

     流和字节数组:字节数组是静态容器它本身保存全部数据。而流按字节的次序进行访问可以一次访问一个字节也可以访问一段连续的字节。

    4.流的应用举例:文件复制。一次性复制和分配复制两种方式。 一次性复制不适合文件较大时候使用。

    //一次性复制
    //通过文件流建立磁盘文件和应用程序的关系
    Stream source=new FileStream(@"d:1.bmp",filemode.open,fileaccess.read);
    
    //定义用于保存文件的字节数组  数组是定长的所以使用length属性获取流长度。
    byte[] buffer=new byte[source.length];//length属性对网络流不可访问
    
    //通过流对象上的read方法将文件以字节的方式读到buffer即字节数组中。
    int bytesread=source.read(buffer,0,source.length);
    
    //将应用程序中字节数组保存到文件
    stream target=new FileStream(@"c:1.bmp",filemode.create,fileaccess.write);
    target.write(buffer,0,buffer.length);
    target.dispose();
    
    
    //第二种方法  分批复制 
    int buffersize=10240 //10k
    byte[]  buffer=new byte[buffersize];
    int bytesread
    do
    {
       bytesread=source.read(buffer,0,buffersize);
       target.write(buffer,0,bytesread);
    }while (bytesread>0)//read方法返回读取到的字节数,返回0说明到了流末尾。
    source.dispose();
    targe.dispose();
    

      

  • 相关阅读:
    无法加载文件或程序集“System.Net.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”
    Linux中安装Oracle jdk
    算符优先文法,中缀式求值,栈的典型应用
    数据结构之--双链表MyLinkedList
    数据结构之--单链表MyArrayList
    Java中的函数对象
    (11)连个工具类之间的比较4.Collections与Arrays
    javaList容器中容易忽略的知识点
    (27)回复泛型,注解、日志组件、枚举在实际项目中的使用
    无问西东,哪怕重头来过
  • 原文地址:https://www.cnblogs.com/tiantianle/p/5002689.html
Copyright © 2011-2022 走看看