(三十八)C#编程基础复习——C#文件读写

文件是存储在磁盘中的具有特定名称和目录路径的数据集合,当我们使用程序对文件进行读取或写入时,程序会将文件以数据流(简称流)的形式读入内存中。我们可以将流看作是通过通信路径传递的字节序列,流主要分为输入流和输出流,输入流主要用于从文件读取数据(读操作),输出流主要用于向文件中写入数据(写操作)。

一、示例(使用fileStream类读取指定的文件)

 

namespace _040
{
    internal class Program
    {
        static void Main(string[] args)
        {
            FileStream file = new FileStream("test.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
            for(int i=0;i<20;i++)
            {
                file.WriteByte((byte)i);
            }
            file.Position = 0;
            for(int i=0;i<20;i++)
            {
                Console.Write(file.ReadByte()+" ");
            }
            file.Close();
            Console.ReadKey();
        }
    }
}

运行结果:

二、C#中文本文件的读取写入

 

   try
   {
       //创建StreamReader类的对象
       StreamReader file = new StreamReader("test.txt");
       string line;
       //从文件中读取内容
       while ((line = file.ReadLine()) != null)
       {
           Console.WriteLine(line);
       }
   }
   catch(Exception e)
   {
       Console.WriteLine("无法读取文件");
       Console.WriteLine(e.Message) ;
   }
   Console.ReadKey();

 

            //要写入文件中的数据
            string[] str = new string[] { "C#中文网", "http://c.biancheng.net/" ,"C#教程"};
            //创建StreamWriter类的对象
            StreamWriter file = new StreamWriter("demo.txt");
            //将数组中的数据写入文件
            foreach(string s in str)
            {
                file.WriteLine(s);
            }
            file.Close();
            //读取文件中的内容
            string line = "";
            StreamReader readfile = new StreamReader("demo.txt");
            while((line=readfile.ReadLine())!=null)
            {
                Console.WriteLine(line);
            }
            readfile.Close();
            Console.ReadKey();

三、二进制文件读写

C#中的BinaryReader和BinaryWriter类可以用于二进制文件的读写。

示例代码演示二进制文件的读取和写入

namespace _040
{
    internal class Program
    {
        static void Main(string[] args)
        {

            BinaryWriter bw;
            BinaryReader br;
            int i = 25;
            double d = 3.14157;
            bool b = true;
            string s = "C#中文网";
            //创建文件
            try
            {
                bw = new BinaryWriter(new FileStream("mydata", FileMode.Create));
            }
            catch(IOException e)
            {
                Console.WriteLine(e.Message+"\n文件创建失败!");
                return;
            }
            //写入文件
            try
            {
                bw.Write(i);
                bw.Write(d);
                bw.Write(b);
                bw.Write(s);
            }
            catch(IOException e)
            {
                Console.WriteLine(e.Message+"\n文件写入失败");
            }
            bw.Close();
            //读取文件
            try
            {
                br = new BinaryReader(new FileStream("mydata", FileMode.Open));
            }
            catch(IOException e)
            {
                Console.WriteLine(e.Message+"\n文件打开失败!");
                return;
            }
            try
            {
                i = br.ReadInt32();
                Console.WriteLine("Integer data:{0}",i);
                d = br.ReadDouble();
                Console.WriteLine("Double data:{0}",d);
                b = br.ReadBoolean();
                Console.WriteLine("Boolean data:{0}",b);
                s = br.ReadString();
                Console.WriteLine("String data:{0}",s);
            }
            catch(IOException e)
            {
                Console.WriteLine(e.Message+"\n文件读取失败!");
            }
            br.Close();
            Console.ReadKey();
        }
    }
}

 

posted @   代号六零一  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示