zoukankan      html  css  js  c++  java
  • 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"); //与上面语句等价
    }
  • 相关阅读:
    C/C++多文件之间的变量定义
    PKU POJ 2186 Popular Cows 强连通分量
    重载函数
    ZOJ 2763 Prison Break
    201357 训练赛总结
    hdu 4467 Graph 构造
    201356 训练赛总结
    201353 NEERC 2012, Eastern subregional contest
    2013512 CF 183 总结
    一道动态规划
  • 原文地址:https://www.cnblogs.com/guogangj/p/6802918.html
Copyright © 2011-2022 走看看