开发手册 欢迎您!
软件开发者资料库

C# File文件处理 创建和写文件

在C# 程序开发中,我们往往会遇到很多文件上传,文件写入等对于文件的操作业务需要开发,文件处理也是任何应用程序的重要组成部分。C# 有几种创建,读取,更新和删除文件的方法。本文主要介绍C# File文件处理 创建和写文件。

1、使用 File.Create()创建并写入文件

要使用C# 创建文件,可以使用File.Create()FileStream()方法创建文件,例如

1)使用StreamReader

using System;using System.IO;using System.Text;class Test{    public static void Main()    {        string path = @"c:\temp\MyTest.txt";        try        {            // 创建文件,如果文件存在,则覆盖该文件。            using (FileStream fs = File.Create(path))            {                byte[] info = new UTF8Encoding(true).GetBytes("https://www.wonhero.com");                // 向文件中写入一些信息。                fs.Write(info, 0, info.Length);            }            // 打开流并读取。            using (StreamReader sr = File.OpenText(path))            {                string s = "";                while ((s = sr.ReadLine()) != null)                {                    Console.WriteLine(s);                }            }        }        catch (Exception ex)        {            Console.WriteLine(ex.ToString());        }    }}

2)使用File.WriteAllLines

using System;using System.IO;using System.Text;class Test{    public static void Main()    {        string path = @"c:\temp\MyTest.txt";        // 此文本只添加一次到文件中。        if (!File.Exists(path))        {            // 创建一个要写入的文件。            string[] createText = { "Hello", "And", "Welcome" };            File.WriteAllLines(path, createText, Encoding.UTF8);        }        // 此文本总是被添加,使文件随着时间的推移而变长        string appendText = "This is extra text" + Environment.NewLine;        File.AppendAllText(path, appendText, Encoding.UTF8);        // 打开要从中读取的文件。        string[] readText = File.ReadAllLines(path, Encoding.UTF8);        foreach (string s in readText)        {            Console.WriteLine(s);        }    }}

3)使用WriteAllText

using System;using System.IO;using System.Text;class Test{    public static void Main()    {        string path = @"c:\temp\MyTest.txt";        // 此文本只添加一次到文件中。        if (!File.Exists(path))        {            //创建一个要写入的文件。            string createText = "Hello and Welcome" + Environment.NewLine;            File.WriteAllText(path, createText, Encoding.UTF8);        }        // 此文本总是被添加,使文件随着时间的推移而变长        string appendText = "This is extra text" + Environment.NewLine;        File.AppendAllText(path, appendText, Encoding.UTF8);        // 打开要从中读取的文件。        string readText = File.ReadAllText(path);        Console.WriteLine(readText);    }}

4)使用FileStream对象的Write()方法

using System;using System.IO;using System.Text;class Test{    public static void Main()    {        string path = @"c:\temp\MyTest.txt";        if (!File.Exists(path))        {            // 创建文件            using (FileStream fs = File.Create(path))            {                Byte[] info = new UTF8Encoding(true).GetBytes("https://www.wonhero.com");                fs.Write(info, 0, info.Length);            }        }        // 打开文件并读取        using (FileStream fs = File.OpenRead(path))        {            byte[] b = new byte[1024];            UTF8Encoding temp = new UTF8Encoding(true);            while (fs.Read(b,0,b.Length) > 0)            {                Console.WriteLine(temp.GetString(b));            }        }    }}

2、使用FileStream()创建并写入文件

using System;using System.IO;class FStream{    static void Main()    {        const string fileName = "wonhero.dat";        // 创建要写入文件的随机数据。        byte[] dataArray = new byte[100000];        new Random().NextBytes(dataArray);        using(FileStream            fileStream = new FileStream(fileName, FileMode.Create))        {            // 将数据逐字节写入文件。            for(int i = 0; i < dataArray.Length; i++)            {                fileStream.WriteByte(dataArray[i]);            }            // 将流位置设置为文件的开头。            fileStream.Seek(0, SeekOrigin.Begin);            }    }}

注意:文件写入时追加内容还可以使用AppendAllLinesAppendAllText

AppendText等方法。

 3、C# File和fileinfo类

两个类功能差不多,File是静态方法实现的,Fileinfo通过实例方法实现的。FileInfo使用示例如下,

using System;using System.IO;class Test{    public static void Main()    {        string path = Path.GetTempFileName();        var fi1 = new FileInfo(path);        // 创建写入文件        using (StreamWriter sw = fi1.CreateText())        {            sw.WriteLine("Hello");            sw.WriteLine("And");            sw.WriteLine("Welcome");        }        // 打开读取文件        using (StreamReader sr = fi1.OpenText())        {            var s = "";            while ((s = sr.ReadLine()) != null)            {                Console.WriteLine(s);            }        }        try        {            string path2 = Path.GetTempFileName();            var fi2 = new FileInfo(path2);            // 确保目标不存在。            fi2.Delete();            // 复制文件            fi1.CopyTo(path2);            Console.WriteLine($"{path} was copied to {path2}.");            // 删除创建的文件            fi2.Delete();            Console.WriteLine($"{path2} was successfully deleted.");        }        catch (Exception e)        {            Console.WriteLine($"The process failed: {e.ToString()}");        }    }}