目录
1、驱动器管理类:
2、目录管理类:
3、文件管理类:
4、路径管理类:
5、FileStream类读取文件
6、StreamReader类读取文件
7、使用FileStream类写入文件,用FileStream类写入文件可以指定要写入的位置
8、StreamWriter类写入文件
9、读写二进制文件使用BinaryReader类和BinaryWriter类
1、驱动器管理类:
输出每一个硬盘驱动器的驱动器名称、驱动器类型、总空间大小及剩余空间大小:
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();
}
}
2、目录管理类:
(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();
3、文件管理类:
下面的代码用于在前面创建好的“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();
4、路径管理类:
定义两个路径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();
5、FileStream类读取文件
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());
}
}
6、StreamReader类读取文件
注:如果要读取或写入的文件只包含纯文本数据,那么可以使用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();
7、使用FileStream类写入文件,用FileStream类写入文件可以指定要写入的位置
此时的内容追加到文件的末尾
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();
8、StreamWriter类写入文件
注:如果要读取或写入的文件只包含纯文本数据,那么可以使用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();
9、读写二进制文件使用BinaryReader类和BinaryWriter类
当输入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<fs.Length)
{
student = br.ReadString();
Console.WriteLine(student);
}
br.Close();
fs.Close();
}
}