文件管理
FileStream
:是一个用于读写文件的一个类。它提供了基于流的方式操作文件,可以进行读取、写入、查找和关闭等操作。
第一个参数:path(路径)
相对路径:相对于当前项目的bin目录下的Debug和Realse来说的,只关乎要找的东西在哪,忽略外层地址。(@“”)
绝对路径:D:\WinForms\文件管理\bin (从外向内都直接指向了要查找的文件。)
第二个参数:FileMode
CreateNew = 1,
Create, 创建一个新的文件,如果文件存在,则覆盖该文件
Open, 打开一个已有的文件,如果文件不存在,则抛出异常
OpenOrCreate, 打开一个已有的文件,如果文件不存在,则按照指定路径创建一个新的文件并打开
Append 打开一个已经存在的文件,并将位置锁定到文件的末尾进行追加,不存在则创建第三个参数:FileAccess(文件的读写权限)
首先我们先创建一个winform窗体,拖出下图示例的控件⬇
文本文件写入
private void btnWrite_Click(object sender, EventArgs e) {//创建文件流FileStream fileStream = new FileStream(@"myfile.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);//2、创建写入器StreamWriter writer = new StreamWriter(fileStream);//3、以流的形式写入数据writer.Write(this.textBox1.Text);//4、关闭写入器,注意这一步的目的是为了清理写入器中的缓存,证明已经写入成基础流了,所以要关闭writer.Close();//5、关闭文件流fileStream.Close();
}
读取文件内容
private void btnRead_Click(object sender, EventArgs e) {FileStream fileStream = new FileStream(@"myfile.txt", FileMode.Open);StreamReader reader = new StreamReader(fileStream);//读取来自指定位置的流,直到结尾的所有字符this.textBox1.Text = reader.ReadToEnd();reader.Close();fileStream.Close();}
模拟写入系统日志
private void btnLog_Click(object sender, EventArgs e) {try {FileStream fs = new FileStream(@"故意写一个不存在的文件.txt", FileMode.Open);} catch (Exception ex) {//日志错肯定不止一个,所以选用追加FileStream fileStream = new FileStream(@"文件操作项目的错误日志.log", FileMode.Append);StreamWriter streamWriter = new StreamWriter(fileStream);streamWriter.WriteLine(DateTime.Now.ToString() + ":[操作文件异常]" + ex.Message);streamWriter.Close();fileStream.Close();}}
删除文件
private void btnDelete_Click(object sender, EventArgs e) {string deleteStr = this.txtOrigin.Text;File.Delete(deleteStr);}
复制文件
private void btnCoppy_Click(object sender, EventArgs e) {//1、首先判断目标路径文件是否存在(如果文件存在,直接复制会报错) if (File.Exists(this.txtTarget.Text)) {//存在,删除File.Delete(this.txtTarget.Text);}//复制文件File.Copy(this.txtOrigin.Text, this.txtTarget.Text);}
移动文件
private void btnMove_Click(object sender, EventArgs e) {if (File.Exists(this.txtTarget.Text)) {//存在,删除File.Delete(this.txtTarget.Text);}//如果当前文件存在才移动if (File.Exists(this.txtOrigin.Text)) {//存在,则删除File.Move(this.txtOrigin.Text, this.txtTarget.Text);} else {MessageBox.Show("要移动的文件不存在");}
}
显示指定目录下的所有文件
private void showFolder_Click(object sender, EventArgs e) {string[] files = Directory.GetFiles(this.txtFolder.Text);textBox1.Text = "";for (int i = 0; i < files.Length; i++) {this.textBox1.Text += (i + 1) + "\t" + files[i] + "\r\n";}}
显示指定目录下所有子目录
private void button2_Click(object sender, EventArgs e) {string[] files = Directory.GetFileSystemEntries(this.txtFolder.Text);textBox1.Text = "";for (int i = 0; i < files.Length; i++) {this.textBox1.Text += (i + 1) + "\t" + files[i] + "\r\n";}
}
在指定目录下创建一个子目录
private void button3_Click(object sender, EventArgs e) {Directory.CreateDirectory(this.txtFolder.Text);}
删除指定目录下所有子目录和文件
private void button4_Click(object sender, EventArgs e) {//File与FileInfo都能实现,区别就是静态方法和实例方法//Directory与DirectoryInfo也都能实现,也是静态方法实例方法的区别//删除的是不能为空的目录//DirectoryInfo directoryInfo = new DirectoryInfo(this.txtFolder.Text);//参数表示是否删除子目录和文件,//true:强制删除,false:该文件夹必须为空才可以删除//directoryInfo.Delete(true);Directory.Delete(this.txtFolder.Text, true);}