首页 > 代码库 > 文件流FileStream

文件流FileStream

  1. FileStream对象表示在磁盘或网络路径上指向文件的流
  2. 使用 FileStream 类对文件系统上的文件进行读取、写入、打开和关闭操作
  3. FileStream 对输入输出进行缓冲,从而提高性能
  4. 为什么不用File.ReadAllText()? 好处之一就是:对于大文件来说,FileStream可以对文件采取分段读取,即每次只读取一部分到内存。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace FileOperation{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        //选择文件框        private void btnOpenFile_Click(object sender, EventArgs e)        {            //new 选择文件框 对象            OpenFileDialog ofd = new OpenFileDialog();            //设置选择文本框的起始位置---桌面            ofd.InitialDirectory = @"C:\Users\lantian\Desktop";            //用户点击确认            if (ofd.ShowDialog() == DialogResult.OK)            {                //保存当前选择文件的路径,显示在文本框                txtOpenFilePath.Text = ofd.FileName;            }        }        /// <summary>        /// 保存文件        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnSaveFile_Click(object sender, EventArgs e)        {            //获取多行文本的内容            string strContent = txtInPut.Text;            //实例化 FileStream---导入命名空间using System.IO;            //参数:文件路径,制定操作系统打开文件的方式Create----有则覆盖,无则创建            //凡是和网络,文件操作相关的,都应该(1)try...catch(2)销毁,用using            using (FileStream fs = new FileStream(txtOpenFilePath.Text,FileMode.Create))            {                //创建字符数组,并指定字符数组的大小1024*1024*4,相当于4M                //byte[] byteText=new byte[1024*1024*4];                //字符串转换成字节数组----Encoding.UTF8.GetBytes这个方法。                byte[] byteText = Encoding.UTF8.GetBytes(strContent);                //参数:要写入到文件的数据数组,从数组的第几个开始写,一共写多少个字节                fs.Write(byteText,0,byteText.Length);                MessageBox.Show("保存成功!");            }        }        /// <summary>        /// 读取文件        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnReadFile_Click(object sender, EventArgs e)        {            //创建文件流(文件路径,文件操作方式.打开)            using (FileStream fs = new FileStream(txtOpenFilePath.Text, FileMode.Open))            {                //创建一个容量4M的数组                byte[] byteText = new byte[1024 * 1024 * 4];                //从文件中读取数据写入到数组中(数组对象,从第几个开始读,读多少个)                //返回读取的文件内容真实字节数                int length =fs.Read(byteText,0,byteText.Length);                //如果字节数大于0,则转码                if (length > 0)                {                    //将数组转以UTF-8字符集编码格式的字符串                    txtInPut.Text = Encoding.UTF8.GetString(byteText);                    MessageBox.Show("读取成功");                }            }        }    }}