C#我在使用StreamReader读取资源内的文本文件时遇到了FileNotFoundexception
using (SteamReader sr = new StreamReader("text.txt"))
我还试图不将文本文件放在.resx
文件上。
您正在使用的StreamReader
构造函数希望该文件存在于磁盘上。 如果文件嵌入在程序GetManifestResourceStream
可以使用GetManifestResourceStream
方法。
例如:
// Get the current assembly. If the file is embedded inside a different // assembly you will need to get that assembly var assembly = Assembly.GetExecutingAssembly(); using (var stream = assembly.GetManifestResourceStream("AssemblyName.test.txt")) using (var sr = new StreamReader(stream)) { ... }
资源嵌入到程序集中的关键取决于文件位于层次结构中的位置。 它总是以程序集名称为前缀,然后是任何可能的子文件夹(如果有的话)。
确保在其属性中将Build Action
设置为此文件的Embedded Resource
。 这里an article
,详细介绍了访问嵌入式资源。