FileStream对象
1、创建FileStream对象
带两个参数的构造函数:FileStream file = new FileStream(filename,FileMode.Member);
带三个参数的构造函数:FileStream file = new FileStream(filename,FileMode.Member,FileAccess.Member);
1)FileMode成员
(1)Append:如果文件存在,打开文件,流指向文件的末尾,只能与枚举FileAccess.Write联合使用。
如果文件不存在,创建一个新文件。只能与枚举FileAccess.Write联合使用。
(2)Create:如果文件存在,删除该文件,然后创建新文件。如果不存在,创建新文件
(3)CreateNew:如果文件存在,抛出异常。如果不存在,创建新文件
(4)Open:如果存在,打开现有的文件,流指向文件的开头。如果不存在,抛出异常
(5)OpenOrCreate:如果文件存在,打开文件,流指向文件的开头。如果不存在,创建新文件
(6)Truncate:打开现有文件,清除其内容。流指向文件的开头,保留文件的初始创建日期
2)FileAccess成员
(1)Read:打开文件,用于只读
(2)Write:打开文件,用于只写
(3)ReadWrite:打开文件用于读写
2、文件定位
FileStream访问文件指定位置用Seek()方法,该方法有两个参数,第一个参数是偏移量,第二个参数是起始位置,
用SeekOrigin枚举表示,即Begin、Current、End。
例: file.Seek(8,SeekOrigin.Begin); //指向文件的第8个字节
file.Seek(2,SeekOrigin.Current); //从当前位置向后移动两个字节,即指向文件的第10个字节
file.Seek(-5,SeekOrigin.End); //指向文件的倒数第5字节
3、FileStream读取文件
FileStream读取文件用FileStream.Read()方法,该方法有三个参数,第一个参数是目标字节数组,第二个参数是目标字节数组的起始写入位置(通常是0),
第三个参数是从文件中读取多少字节。
例:
file.Read(byData,0,3); //读取3个字节
4、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 FileStramDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
FileStream file = new FileStream("hello.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite);//1、创建文件流
StreamWriter writer = new StreamWriter(file);//2、创建文件写器
string strMessage=txtMessage.Text.Trim();
writer.Write(strMessage);//3、写入内容
writer.Close();//4、关闭写器
file.Close();//5、关闭文件流
}
private void button1_Click(object sender, EventArgs e)
{
FileStream file = new FileStream("hello.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamReader reader = new StreamReader(file);
string strMessage = reader.ReadToEnd();
txtMessage.Text = strMessage;
reader.Close();
file.Close();
}
}
}