目录
1、驱动器管理类:
2、目录管理类:
3、文件管理类:
4、路径管理类:
5、FileStream类读取文件
6、StreamReader类读取文件
7、使用FileStream类写入文件,用FileStream类写入文件可以指定要写入的位置
8、StreamWriter类写入文件
9、读写二进制文件使用BinaryReader类和BinaryWriter类
输出每一个硬盘驱动器的驱动器名称、驱动器类型、总空间大小及剩余空间大小:
DriveInfo[] drives = DriveInfo.GetDrives(); foreach (DriveInfo driver in drives) //遍历每一个驱动器 { Console.WriteLine("驱动器{0}:", driver.Name); if (driver.IsReady == true) { Console.WriteLine("驱动器类型为{0},总空间为{1},剩余空间为{2}",driver.DriveType,driver.TotalSize,driver.TotalFreeSpace); Console.ReadKey(); } }
(1)使用Directory类创建目录及删除目录
//创建目录 if (Directory.Exists("e:\\C#程序设计")){ Console.WriteLine("目录已经存在!"); } else { Directory.CreateDirectory("e:\\C#程序设计"); Console.WriteLine("目录被成功创建!"); } //删除目录 Directory.Delete("e:\\C#程序设计"); Console.WriteLine("目录被删除!"); Console.ReadKey();
(2)使用DirectoryInfo类创建目录及删除目录
//创建目录 DirectoryInfo di = new DirectoryInfo("e:\\C#程序设计"); if(di.Exists) Console.WriteLine("目录已经存在!"); else { di.Create(); Console.WriteLine("目录被成功创建!"); } //删除目录 di.Delete(); Console.WriteLine("目录被删除!"); Console.ReadKey();
下面的代码用于在前面创建好的“E:\C#程序设计”目录的基础上,创建文件myfile1.txt,并向文件中追加文本,以及完成文件间的复制。
//创建文件 if(!File.Exists(@"e:\C#程序设计\myfile1.txt")) { File.Create(@"e:\c#程序设计\myfile1.txt"); Console.WriteLine("文件创建成功!"); } //向文件中追加文本 //注:当myfile1.txt文件存在时,可以这样直接追加,myfile1.txt文件不存在不能直接追加文本 File.AppendAllText(@"e:\C#程序设计\myfile1.txt", "hello , c#!"); //将文件myfile1.txt复制给文件myfile2.txt File.Copy(@"e:\C#程序设计\myfile1.txt", @"e:\C#程序设计\myfile2.txt"); Console.ReadKey();
定义两个路径pathStr1和pathStr2,将其合并后的值保存到路径pathStr中,最后输出pathStr路径中的信息
String pathStr1 =@"e:/ C#程序设计"; //绝对路径
String pathStr2 ="myfile.tst"; //相对路径
String pathStr = Path.Combine(pathStr1, pathStr2);
Console.WriteLine("该路径中的文件名为{0}\n 文件所在目录为{1}",Path.GetFileName(pathStr),Path.GetDirectoryName(pathStr));
Console.ReadKey();
byte[] byData = new byte[100]; char[] charData = new char[1000]; public void Read() { try { FileStream file = new FileStream(@"E:\C#程序设计\test.txt", FileMode.Open); file.Seek(8, SeekOrigin.Begin); //byData传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符. file.Read(byData, 0, 100); Decoder d = Encoding.Default.GetDecoder(); d.GetChars(byData, 0, byData.Length, charData, 0); Console.WriteLine(charData); file.Close(); } catch (IOException e) { Console.WriteLine(e.ToString()); } }
注:如果要读取或写入的文件只包含纯文本数据,那么可以使用StreamReader类和StreamWriter类
读取test.txt文件中的所有文本,并将其输出
StreamReader sr = new StreamReader(@"e:\C#程序设计\test.txt",Encoding.UTF8); string str = sr.ReadToEnd(); Console.WriteLine("读取整个文本文件的输出结果为{0}",str); Console.ReadKey(); sr.Close();
此时的内容追加到文件的末尾
FileStream fs = new FileStream("E:\\ak.txt", FileMode.Append, FileAccess.Write); //获得字节数组 byte[] data = System.Text.Encoding.Default.GetBytes("Hello World!"); //开始写入 fs.Write(data, 0, data.Length); //清空缓冲区、关闭流 fs.Flush(); fs.Close();
注:如果要读取或写入的文件只包含纯文本数据,那么可以使用StreamReader类和StreamWriter类
(1)写入一个字符,写入一个字符串或者是一个字符数组,也可以一次仅写入字符数组中的一部分,
此时内容会追加到文件末尾
StreamWriter sw = new StreamWriter(@"e:\C#程序设计\test.txt",true); sw.Write('a'); sw.Write("hello"); char[] charArray = { 'a','b','c','d'}; sw.Write(charArray); sw.Write(charArray,1,2); //写入字符数组的部分,从下标1开始,写入2个字符即“bc” sw.Close();
(2)如果是基于FileStream创建的StreamWriter对象,最后要及时关闭掉StreamWriter和FileStream两个对象,注意关闭顺序,应该先关闭StreamWriter对象,再关闭FileStream对象。
注:此时修改会覆盖原文件
FileStream fs = new FileStream(@"e:\C#程序设计\test.txt", FileMode.Create,FileAccess.Write); StreamWriter sw = new StreamWriter(fs,Encoding.UTF8); string[] set = {"abc","123","789"}; foreach (string s in set) { //注:这样写入是直接将原来的test.txt文件覆盖了,小心写入 sw.Write(s); } sw.Close(); fs.Close();
当输入1时,则进入输入学生信息状态,将输入的学生信息保存到e:\student.dat数据文件中;
当输入2时,则在控制台上直接显示输出所有学生的信息
//入口函数Main()的代码 static void Main(string[] args) { Test t = new Test(); Console.WriteLine("写入学生信息输入1,读取学生数据输入2,请输入:"); string input = Console.ReadLine(); while (input!=null&&input!="") { switch (input) { case "1": t.WriteStudent(); break; case "2": t.ReadStudent(); break; default: Console.WriteLine("您的输入不正确"); break; } input = Console.ReadLine(); } Console.ReadKey(); } //文件读写类 class Test { string stuNumber = "", stuName = "", student = ""; //写方法 public void WriteStudent() { Console.WriteLine("请输入学生的学号:"); stuNumber = Console.ReadLine(); Console.WriteLine("请输入学生的姓名:"); stuName = Console.ReadLine(); student = string.Format("学号:{0}\t 姓名:{1}",stuNumber,stuName); FileStream fs = new FileStream(@"e:\student.dat",FileMode.Append,FileAccess.Write); BinaryWriter bw = new BinaryWriter(fs); bw.Write(student); bw.Close(); fs.Close(); } //读方法 public void ReadStudent() { FileStream fs = new FileStream(@"e:\student.dat",FileMode.Open,FileAccess.Read); BinaryReader br = new BinaryReader(fs); fs.Position = 0; while (fs.Position