• C#的几种文件操作方法


    创建或覆盖文件

    需求:如果文件不存在,创建之,如果存在,覆盖之。

    1,可能有问题的方法

    using (FileStream fs = File.OpenWrite(@"d:work1.txt")) {
    
        byte[] toBytes = Encoding.UTF8.GetBytes("11111111");
        fs.Write(toBytes, 0, toBytes.Length);
    }

    这个方法不会清空已存在文件的内容,如果源文件的内容比后写入的内容长,那么这些长的内容会被保留,这通常不是我们想要的结果。

    2,正确的方法

    using (FileStream fs = File.Create(@"d:work1.txt")) {
        byte[] toBytes = Encoding.UTF8.GetBytes("11111111");
        fs.Write(toBytes, 0, toBytes.Length);
    }

    唯一的不同就是把File.OpenWrite改成了File.Create,如果文件已经存在,那么其内容会被清空。

    3,方法2的简化版

    File.WriteAllBytes(@"d:work1.txt", Encoding.UTF8.GetBytes("11111111"));

     4,方法2的文本版

    using (StreamWriter sw = File.CreateText(@"d:work1.txt")) {
        sw.Write("11111111");
    }

     5,方法4的简化版

    File.WriteAllText(@"d:work1.txt", "11111111");

    读文件

    1,正常读

    byte[] buff = new byte[1024]; //假设文件不超过1KB
    using(FileStream fs = File.OpenRead(@"d:work1.txt")) {
        int len = fs.Read(buff, 0, 1024);
        string content = Encoding.UTF8.GetString(buff, 0, len);
        Console.WriteLine(content);
    }

    2,读文本文件

    using (StreamReader sr = File.OpenText(@"d:work1.txt")) {
        string content = sr.ReadToEnd();
        Console.WriteLine(content);
    }

    3,方法2的简化版

    string content = File.ReadAllText(@"d:work1.txt");

    追加

    1,正常追加

    using (FileStream fs = File.Open(@"d:work1.txt", FileMode.Append, FileAccess.Write)) {
        byte[] toWrite = Encoding.UTF8.GetBytes("123123
    ");
        fs.Write(toWrite, 0, toWrite.Length);
    }

    2,追加文本

    using (StreamWriter sw = File.AppendText(@"d:work1.txt")) {
        sw.Write("123123
    ");
        sw.WriteLine("123123"); //与上面语句等价
    }
  • 相关阅读:
    LeetCode(13) - Roman to Integer
    LeetCode(12) - Integer to Roman
    LeetCode(11) - Container With Most Water
    LeetCode(10) - Regular Expression Matching
    asp.net Mvc 使用uploadify 上传文件 HTTP 302 Error
    DbEntry 4.2 建立关系时的一些问题
    Log4Net 日志文件分类保存
    JqGrid 隐藏水平滚动条完美解决方案
    WebSocket使用SuperWebSocket结合WindowsService实现实时消息
    LigerUI ligerComboBox 下拉框 表格 多选无效
  • 原文地址:https://www.cnblogs.com/guogangj/p/6802918.html
Copyright © 2020-2023  润新知