说明:
> 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);
|
③文件流用完后必须关闭
④读取器用完后也要关闭
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("移动失败");
}
|