C#文件读写小案例

目录

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();
            }
        }

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值