c#从资源中读取字节数组

Ras*_*oth 12 c# bytearray

我一直试图弄清楚如何从我的一个资源文件中读取一个字节数组,我已经尝试过最受欢迎的点击谷歌而没有取得明显的成功.

我有一个存储在我的程序的资源集合中的文件,我想将此文件作为字节数组读取

我目前只是使用以下代码从我的程序的根目录中读取文件:

FileStream fs = new FileStream(Path, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
byte[] bin = br.ReadBytes(Convert.ToInt32(fs.Length));
fs.Close();
br.Close();
Run Code Online (Sandbox Code Playgroud)

但是我想将此文件存储为我的应用程序中的资源,这样我就不必为我的程序发送额外的文件.

此文件包含我的程序的一部分使用的加密数据.

任何帮助或指针将不胜感激!

Dar*_*rov 18

假设您正在讨论作为程序集中的资源嵌入的文件:

var assembly = System.Reflection.Assembly.GetExecutingAssembly();
using (var stream = assembly.GetManifestResourceStream("SomeNamespace.somefile.png"))
{
    byte[] buffer = new byte[stream.Length];
    stream.Read(buffer, 0, buffer.Length);
    // TODO: use the buffer that was read
}
Run Code Online (Sandbox Code Playgroud)


小智 15

您可以通过项目属性,"资源"选项卡(如果需要,创建一个),添加资源(现有文件),为应用程序添加资源.添加文件后,可以将其FileType(在其属性中)设置为Binary.

文档

之后,您可以轻松地以字节[]的形式访问您的文件:

var myByteArray = Properties.Resources.MyFile;
Run Code Online (Sandbox Code Playgroud)