• C#中的文件操作


    在.NET Framework 中进行的所有输入和输出工作都要用到流(stream)

    有两种类型的流:

    • 输出流:当向某些外部目标写入数据时,就要用到输出流(将数据写入到文件中)。
    • 输入流:用于将数据读入程序可以访问的内存或变量中(从文件中读入数据到内存或者变量中)。

    下面列出文件操作的一些常用类:

    类名 说明
    File 静态实用类,提供许多静态方法,用于移动、复制和删除文件
    Directory 静态实用类,提供许多静态方法,用于移动、复制和删除文件
    Path 实用类,用于处理路径名称
    FileStream 表示可写或可读,或二者均可的文件。此文件可以同步或异步地读写
    StreamReader 从流中读取字符数据,可以使用FileStream 将其创建为基类
    StreamWriter 向流写入字符数据,可以使用FileStream 将其创建为基类

     其中File 类的常用方法有:

    方法 说明
    Copy() 将文件从源位置复制到目标位置
    Create() 在指定的路径上创建文件
    Delete() 删除文件
    Open() 返回指定路径上的FileStream 对象
    Move() 将指定的文件移动到新位置。可以在新位置为文件指定不同的名称

    eg:

                File.Create(@"F:abc.txt");  //创建文件 abc.txt
                File.Copy(@"F:abc.txt",@"F:Filesabc.txt");  //将 abc.txt 文件 复制到  Files文件夹中(开始里面没有abc.txt文件)

    检查是否存在某个文件:

                bool t = File.Exists(@"F:Test.txt");
                Console.WriteLine(t);

     Directory类(静态类)的常用方法

    创建文件夹:

                创建文件夹    静态类
                Directory.CreateDirectory(@"F:Test1");
                Directory.Delete(@"F:Test1");

    获取应用程序的当前目录:

                string path = Directory.GetCurrentDirectory();  //获取应用程序的当前工作目录
                Console.WriteLine(path);

    FileStream对象

    FileStream 对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader 或StreamWriter 执行这些功能。这是因为FileStream 类操作的是字节和字节数组(byte[]),而Stream 类操作的是字符数据(char[])

     FileStream类有两个常用的构造函数:

    第一个:

    FileStream aFile = new FileStream(filename, FileMode.<Member>);

    第二个:

    FileStream aFile = new FileStream(filename, FileMode.<Member>, FileAccess.<Member>);

    其中  FileMode.<Member> 和 FileAccess.<Member> 是个枚举值。

    其中FileMode.<Member>取值为:

    FileAccess.<Member>取值为:

     使用 FileStream类 从文件中读出数据

                byte[] byData = new byte[200];
                char[] charData = new char[200];
    
                try
                { 
                    FileStream aFile = new FileStream(@"F:Test.txt", FileMode.Open); //使用指定的路径和创建模式初始化 FileStream 类的新实例。
    
                    aFile.Seek(1, SeekOrigin.Begin);  //从文件的第几个字符开始查找,下标从0开始,这里相当于从b开始计算
                    aFile.Read(byData, 0, 200);  //读出文件中的数据,并存在 byData字节数组中
                }
    
                catch (System.Exception ex)
                {
                    Console.WriteLine("An Exception Occured!");
                    Console.WriteLine(ex.ToString());
                    Console.ReadKey();
                }
    
                //Decoder类   将一个字节数组转换为字符数组  用于输出
                Decoder d = Encoding.UTF8.GetDecoder();
    
                d.GetChars(byData, 0, byData.Length, charData, 0);  //该方法用于提取 字节数组 byData , 并存储在 charData字节数组中
    
                Console.WriteLine(charData);  //输出 charData数组中的数据
                Console.ReadKey();

     使用FileStream 类向文件中写入数据

                byte[] byData = new byte[200];
                char[] charData = new char[200];
    
    
                //将输入的字符串存入到字符数组 charData[] 中
                Console.Write("请输入一个字符串:");
                string temp = Console.ReadLine();
                for (int i = 0; i < temp.Length; i++)
                {
                    charData[i] = temp[i];
                }
    
                //将字符数组转化为字节数组
                Encoder en = Encoding.UTF8.GetEncoder();
                en.GetBytes(charData, 0, charData.Length, byData, 0, true);
    
    
                //File.Create(@"F:Temp.txt");
                FileStream fs = new FileStream(@"F:Temp1.txt", FileMode.CreateNew);
                fs.Seek(0, SeekOrigin.Begin);
                fs.Write(byData, 0, 200); //此处已将字符写入到 字节数组byData中

     使用 StreamReader 和  StreamWriter  对文件进行最简单的读写操作

    进行写操作

                //最简单的把向文件中写入数据
                StreamWriter sw = new StreamWriter("text2.txt");
                sw.Write("hello world");
                sw.Close();

    此段代码将在你的项目中 ..inDebug  中产生一个 text2.txt的文本文件, 其中写入了内容 " hello world ".

    进行读操作: (只返回一行数据)

                StreamReader sr = new StreamReader("text2.txt");
                string str = sr.ReadLine();  // ReadLine() 只能返回一行字符串
                sr.Close();
                Console.WriteLine(str);

    输出结果:

    若想返回文件中的全部内容,则使用 StreamReader 的  Read()方法

                //创建一个缓冲区来接收从流中读出的数据
                char[] data = new char[10000];
                StreamReader sr = new StreamReader("text2.txt");
                sr.Read(data, 0, data.Length);
                sr.Close();
                Console.WriteLine(data);

    输出结果:

  • 相关阅读:
    Condition Variables
    Cocos2d-x执行时错误:Cocos2d: Get data from file(xxx.xxx) failed!
    HDU
    Android context空指针异常
    linux c server and client 简单的通信
    UVM:8.4.3 用factory 机制创建实例的接口
    5.4 桥接模式(4.2)
    rac安装_grid安装校验报错之grid未建立信任关系
    git 使用ss5代理
    convmv 解决GBK 迁移到 UTF-8 ,中文 文件名乱码
  • 原文地址:https://www.cnblogs.com/TangPro/p/3228701.html
Copyright © 2020-2023  润新知