一、文件的操作
Directory类和File类必须有using System.IO引用。
1、创建文件
//CreateDirectory方法用于创建目录,注意路径的写法
DirectoryInfo info = Directory.CreateDirectory(@"c:\资料\学习视频\20130917");
info.FullName的方法可以得到info的全名即新建文件目录。
2、删除文件
//使用delete方法用于删除此目录,如果目录下有文件,需要为delte方法指定参数为true
//info.Delete(false);
3、复制文件夹中的文件
//copy方法用于复制文件,两个参数:一个用来指定源文件的路径,包括文件名称和后缀名,
一个是目标文件地址,包括目标路径以及目标文件的名称,包括后缀名
File.Copy(@"E:\CSDN\2012行课\20130916函数\上午1字典唐诗三百首.wmv", info.FullName+"\\上午1字典唐诗三百首.wmv");
4、移动文件夹中的文件
//如果报异常为:未将对象引用设置到对象的实例,就要检查是否代码中某个对象为Null
File.Move(@"E:\CSDN\2012行课\20130916函数\上午2学生登记系统字典应用.wmv", info.FullName + "\\上午2学生登记系统字典应用.wmv");
5、删除文件夹中的文件
//删除文件前,要确保此文件没有被其他应用程序使用,如视频文件,在删除前不能被播放器播放,哪怕播放器已经关闭,
如果还是不能删除(一般会报异常:此文件正在被另一个进程使用),就要到任务管理器中找到此播放器的进程,将其关闭
File.Delete(info.FullName + @"\上午1字典唐诗三百首.wmv");
6、删除文件夹(只能删除最后一个文件夹)
info.Delete(true);
Directory.Delete(@"c:\资料",true);
Directory.Delete方法能够删除一个文件夹中的所有子文件夹
Directory.DeleteDirectory.DeleteDirectory.Delete二、文件的读写
1、创建一个文件
File.Create(@"C:\资料\学习视频\20130917\studentinfo.txt");
2、向文件中输入内容
//使用write方法会将上次写入的内容替换掉
File.WriteAllText(@"C:\资料\学习视频\20130917\studentinfo.txt",this.textBox1.Text);
//AppendAllText用于向文件中追加内容,不会将原来内容替换掉
File.AppendAllText(@"C:\资料\学习视频\20130917\studentinfo.txt", this.textBox1.Text);
3、读出文件中的内容
string content= File.ReadAllText(@"C:\资料\学习视频\20130917\studentinfo.txt");
MessageBox.Show(content);
三、通过流对文件进行输入和读出的操作
1、向文件中输入内容
#region MyRegion
//使用open方法打开一个文本文件,第一个参数是文本文件的路径,
第二个参数指明打开模式,OpenOrCreate模式表示如果文件存在就打开,如果不存在就在指定目录下创建指定名称的文件;
第三个参数指明打开文件后要对文件进行的操作,度,写或者既读且写
FileStream filestream= File.Open(@"C:\资料\学习视频\20130917\studentinfo.txt", FileMode.OpenOrCreate, FileAccess.Write);
file.open的返回类型是FileStream类型
/*假设现在想使用filestream的write方法写入“锄禾日当午,汗滴禾下土”这两句,就需要将这两句转换成byte数组,因为我们看到filestream的write只能接受byte类型数组,这对我们开发者来说是额外的工作,是重复劳动,所以微软专门除了StreamWriter(StreamReader)类用来简化我们的工作,只需要在实例化StreamWriter类的时候,将filestream作为其构造函数的参数就可以了。然后调用StreamWriter对象的write或者writeLine方法进行文件的写入,我们猜测StreamWriter的内部将字符串转换成了byte数组,最后还是调用filestream的write方法进行文件的写入*/
StreamWriter writer = new StreamWriter(filestream);
writer.WriteLine(this.textBox1.Text);
#region 关闭文件流,释放资源,否则其他进程无法对此文件进行操作
writer.Close();
writer.Dispose();
filestream.Close();
filestream.Dispose();
#endregion
#endregion
2、读取文件中的内容
根据1可得读取和输入结构差不多。
FileStream filestream= File.Open(@"C:\资料\学习视频\20130917\studentinfo.txt", FileMode.OpenOrCreate, FileAccess.Read);
StreamReader reader = new StreamReader(filestream);
string result= reader.ReadLine();
reader.Close();
reader.Dispose();
filestream.Close();
filestream.Dispose();
四、优化代码
每一次都要关闭和释放资源,有时候会遗忘。所以可以使用using方法,它可以自动关闭和释放(数据库的连接也会用到)
using (FileStream filestream = File.Open(@"C:\资料\学习视频\20130917\studentinfo.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
using (StreamWriter writer = new StreamWriter(filestream,Encoding.Default))
{
writer.WriteLine(this.textBox1.Text);
}
}