zoukankan      html  css  js  c++  java
  • FileStream的读取和写入

    使用 FileStream 类对文件系统上的文件进行读取、写入、打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道、标准输入和标准输出。读写操作可以指定为同步或异步操作。FileStream 对输入输出进行缓冲,从而提高性能。

     先看代码,后面讲解:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;//注意,必不可少

    namespace WasteIndustry {
        
    public partial class Form3 : Form {
            
    public Form3() {
                InitializeComponent();
     
    /*
     * C# Program
     * Author:神舟龙
     * Email: hxl2008hxl@hotmai.com
     
    */

            }

            
    private void Form3_Load(object sender, EventArgs e) {
                
    //创建一个文本文件,并实例化一个文件流
                FileStream MyFileStream1 = new FileStream(@"D:\Test.text",FileMode.Create);
                
                FileInfo MyFiles 
    = new FileInfo(@"D;\Test.text");
                
    //实例化一个只读文件流
                FileStream MyFileStream2 = MyFiles.OpenRead();

                
    //设置文件流为只写权限
                MyFileStream2 = MyFiles.OpenWrite();
                
    //设置文件流的打开方式为追加模式,只读权限,不共享
                MyFileStream2 = MyFiles.Open(FileMode.Append,FileAccess.Read,FileShare.None);
                
    //创建文件
                MyFileStream2 = MyFiles.Create();

                
    //从文件中读取字节
                int MyBytes = MyFileStream1.ReadByte();
                
    //定义数组长度
                int NumberOFBytes = 20;
                
    //byte类型数组
                byte[] MyByteArray = new byte[NumberOFBytes];
                
    //从文件中读取20个字节放入数组中
                int BytesRead = MyFileStream1.Read(MyByteArray,0,NumberOFBytes);

                
    //定义一个字节
                byte MyWriteByte = 100;
                
    //向文件中写入一个字节
                MyFileStream1.WriteByte(MyWriteByte);

                
    //定义数组长度
                int NumberOfBytesToWrite = 256;
                
    //定义byte类型数组
                byte[] MyWriteByteArray=new Byte[NumberOfBytesToWrite];

                
    //循环向byte类型的数组中插入byte值
                for (int i = 0; i < 256; i++) {
                    MyWriteByteArray[i]
    =(byte)i;
                    i
    ++;
                }
                
    //向流中写入数组内容
                MyFileStream1.Write(MyWriteByteArray,0,NumberOfBytesToWrite);
                
    //关闭流
                MyFileStream1.Close();
                
    //关闭流
                MyFileStream2.Close();
            }
        }
    }
    MyFileStream1对象,使用指定路径和创建模式实例化,创建模式FileMode是一个枚举类型,它还包括:
    Append 可以打开现有的文件并查找的文件尾部,FileMode.Append只能与FileAcces.Write(写权限)一起使用
    Create 创建新文件,如果文件存在则覆盖,没有则新建
    CreateNew 创建新文件,有的话,出现异常
    Open 打开现有的文件,如果有打开,不存在文件就会引发异常
    如果存在文件则打开,不存在则创建 如果存在文件则打开,不存在则创建


    MyFileStream2对象,用FileInfo实例化,FileInfo方法有open,openreade,opentext,create,createtext。

    文件流的读取(read)与写入(write);

    read

                //定义数组长度
                int NumberOFBytes = 20;
                
    //byte类型数组
                byte[] MyByteArray = new byte[NumberOFBytes];
                
    //从文件中读取20个字节放入数组中
                int BytesRead = MyFileStream1.Read(MyByteArray,0,NumberOFBytes);

    定义一个byte类型的数组,设置数组的长度,read方法就是在文件中从0开始读取,读取20个字节数,然后替换到数组中

      //定义数组长度
                int NumberOfBytesToWrite = 256;
                
    //定义byte类型数组
                byte[] MyWriteByteArray=new Byte[NumberOfBytesToWrite];

                
    //循环向byte类型的数组中插入byte值
                for (int i = 0; i < 256; i++) {
                    MyWriteByteArray[i]
    =(byte)i;
                    i
    ++;
                }
                
    //向流中写入数组内容
                MyFileStream1.Write(MyWriteByteArray,0,NumberOfBytesToWrite);
    定义一个byte类型的数组,设置数组的长度,并通过循环想byte数组中写入字节,通过write方法把数组中的值从0位置开始向流中写入内容;

     (园内低手,口下留情,欢迎指正!)

    作者:神舟龙
        
     

    新建的wp開發者群:42182428 

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    通过HttpListener实现简单的Http服务
    WCF心跳判断服务端及客户端是否掉线并实现重连接
    NHibernate初学六之关联多对多关系
    NHibernate初学五之关联一对多关系
    EXTJS 4.2 资料 跨域的问题
    EXTJS 4.2 资料 控件之Grid 那些事
    EXTJS 3.0 资料 控件之 GridPanel属性与方法大全
    EXTJS 3.0 资料 控件之 Toolbar 两行的用法
    EXTJS 3.0 资料 控件之 combo 用法
    EXTJS 4.2 资料 控件之 Store 用法
  • 原文地址:https://www.cnblogs.com/shenzhoulong/p/1956530.html
Copyright © 2011-2022 走看看