FileStream文件管理

2024-01-08 20:38:57

文件管理

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);
 }

文章来源:https://blog.csdn.net/qq_51810680/article/details/135465082
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。