说明: > 1.文件是保存到磁盘上的数据的集合。 > 2.流可以看作连续的字节序列,形成“流”。 > 3.文件是一种流。 > 4.在.NET平台上用于处理文件和流的类在System.IO命名空间中,使用时要导入命名空间。 > 5.使用流读/写器对流进行读取/写入操作。

一、文件操作

1.操作文件流的类

①System.IO.FileStream:表示文件流 ②文本文件读写器 StreamReader:用于读取文本文件 StreamWriter:用于写入文本文件 ③二进制文件读写器 BinaryReader:用于读取二进制文件 BinaryWriter:用于写入二进制文件

2.读写文件的步骤

  • 打开文件流
  • 创建读/写器
  • 进行读/写操作
  • 关闭读/写器
  • 关闭文件流

3.打开文件流

打开文件,得到文件流。

1
FileStream stream=File.Open(path,FileMode);

说明: 第一个参数path表示文件路径,可以用绝对路径和相对路径。绝对路径是指以磁盘符号开头的路径,如D:\my\test.cs。注意符号\有特殊含义表示转义符,当写在字符串中时要写2个。相对路径是相对于可执行程序文件(而不是源代码文件)所在路径。相对路径中,..表示父目录,.表示当前目录(可省略),如..\path1\test02.cs path2\test03.txt第二个参数是FileMode枚举类型,可取以下枚举值: - FileMode.Open:打开现有文件 - FileMode.OpenOrCreate:打开或创建文件 - FileMode.Append:打开或创建文件,并向其中追加内容 - FileMode.CreateNew:创建新文件(如果文件存在则抛出异常)

注意:在写文件时,处Append模式外,均覆盖文件中原有的内容。

4.关闭文件流

直接调用FileStream类的Close方法关闭文件流即可。

5.读取文本文件

①打开文件,得到文件流

1
FileStream stream=File.Open(path,FileMode);

②创建读取器

1
StreamReader reader=new StreamReader(stream);

③文件流用完后必须关闭

1
stream.Close();

④读取器用完后也要关闭

1
reader.Close();

6.写入文本文件

①打开文件,得到文件流

1
FileStream stream=File.Open(path,FileMode);

②创建写入器

1
StreamWriter writer=new StreamWriter(stream);

③写入

1
2
writer.Write(“内容”);
writer.WriteLine(“内容”);

④关闭

7.示例1:打开文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog file = new OpenFileDialog();    //打开文件
            DialogResult n = file.ShowDialog();
            if (n == DialogResult.Cancel)
            {
                MessageBox.Show("已取消操作");
            }
            else
            {
                FileStream stream = new FileStream(file.FileName,FileMode.Open);
                StreamReader reader = new StreamReader(stream);
                string s = reader.ReadToEnd();
                textBox1.Text = s;          //文件中的文字显示在textBox1上
                textBox2.Text = file.FileName;  //该文件的路径显示在textBox2上
                stream.Close();
                reader.Close();
            }
        }

8.示例2:保存文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
        private void button2_Click(object sender, EventArgs e)
        {
            SaveFileDialog file = new SaveFileDialog();      //保存文件
            DialogResult n = file.ShowDialog();
            if (n == DialogResult.Cancel)
            {
                MessageBox.Show("已取消操作");
            }
            else
            {
            FileStream stream = new FileStream(file.FileName,FileMode.Append);
            StreamWriter writer = new StreamWriter(stream);
            writer.WriteLine(textBox1.Text);
            writer.Close();
            stream.Close();
            MessageBox.Show("保存成功!");
            }
        }

二、目录操作

说明

1.System.IO.Directory:进行常见目录操作 2.Directory是一个静态类 - 静态类static class只包含静态成员 - 通过类名而非实例名访问静态成员

3.Directory类的常用方法 - Exists(string path):判断是否存在 - CreateDirectory(string path):创建目录 - Delete(string path):删除空目录 - Move(string src, string dest):移动目录(相同盘符) - GetCurrentDirectory():得到当前路径

示例1:创建目录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
private void button1_Click(object sender, EventArgs e)
        {
            string path = textBox1.Text;
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
                MessageBox.Show("目录创建成功,路径为:" + path);
            }
            else
                MessageBox.Show("该目录已存在");
        }

示例2:删除目录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
private void button2_Click(object sender, EventArgs e)
        {
            string path = textBox2.Text;
            if (Directory.Exists(path))
            {
                Directory.Delete(path);
                MessageBox.Show(path+"目录已删除");
            }
            else
                MessageBox.Show("该目录不存在");
        }

示例3:移动目录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
private void button3_Click(object sender, EventArgs e)
        {
            string path1 = textBox3.Text;
            string path2 = textBox4.Text;
            if (Directory.Exists(path1))
            {
                Directory.Move(path1, path2);
                MessageBox.Show("目录已从" + path1 + "移动到" + path2);
            }
            else MessageBox.Show("移动失败");
        }