C# File.WriteAllBytes(string path, byte[] bytes):将指定字节内容写入文件

  • Post category:C#

File.WriteAllBytes(string path, byte[] bytes)方法是C#中文件I/O操作的一种,用来将字节数组写入指定的文件中。该方法会自动创建新文件并将字节数组写入其中,如果文件已经存在,则覆盖该文件的内容。以下是该方法的完整攻略。

方法参数说明

该方法有两个参数:

  • string path: 要写入的文件的路径,可以是绝对路径或者相对路径。
  • byte[] bytes: 要写入文件的字节数组。

使用方法

使用File.WriteAllBytes方法需要引用命名空间System.IO,调用该方法时需要传入两个参数,即文件路径和字节数组。示例如下:

using System.IO;

string path = @"D:\Test.txt";
byte[] bytes = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100}; // Hello World

File.WriteAllBytes(path, bytes);

以上代码将Hello World字符串所表示的字节数组写入了D:\Test.txt文件中。

示例说明

下面给出两个示例,更好地说明该方法的使用。

示例1: 将网络资源保存到本地文件

using System.IO;
using System.Net;

string url = "https://www.baidu.com/";
string path = @"D:\baidu.html";
byte[] bytes = null;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream stream = response.GetResponseStream();
using (MemoryStream ms = new MemoryStream())
{
    byte[] buffer = new byte[4096];
    int count;
    while ((count = stream.Read(buffer, 0, buffer.Length)) > 0)
    {
        ms.Write(buffer, 0, count);
    }

    bytes = ms.ToArray();
}
File.WriteAllBytes(path, bytes);

以上代码将Baidu首页的内容保存到本地的D:\baidu.html文件中,并返回该文件的字节数组。

示例2: 将图片转换为字节数组

using System.IO;

string path = @"D:\Test.jpg";
byte[] bytes = null;

using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
    using (MemoryStream ms = new MemoryStream())
    {
        byte[] buffer = new byte[1024];
        int count;
        while ((count = fs.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, count);
        }

        bytes = ms.ToArray();
    }
}

以上代码将本地D:\Test.jpg文件读取到内存中,并返回该文件的字节数组。

需要注意的是,该方法适用于小文件和中等大小的文件,对于大文件来说,建议采用FileStreamBufferedStream的方式逐块读取文件,以避免内存不足的问题。