Toggle navigation
首页
关于TCPGAME
快乐分享
联系我们
C# 程序运行时释放解决方案内的文件到指定目录
Lonner
时间:2021-03-12 11:50:11
阅读:2642
###需求 有一个文件件,放在解决方案中,但是我希望程序在运行时可以将这个文件释放到指定的磁盘路径。 ###实现 1. 在解决方案红放入文件,具体路径按自己需求设定,如图: ![](//tcpgame.com\mdimg\f6a2a02f-3ad9-4ddb-be95-211267e81179_微信截图_20210312112809.png) 1. 在文件的属性内,将生成操作设置为**嵌入的资源**,很重要,如果忘记设置,后面代码将读取不到资源文件,如图: ![](//tcpgame.com\mdimg\9d796b02-73b3-4cf2-af81-fd95431afa88_微信截图_20210312112916.png) 1. 代码中释放文件 ``` //输出的路径文件名 var filename="D:/myFile.xlsx"; //将解决方案的文件读取到内存流中,注意后面的路径名,需要加上项目命名空间然后用符号[.]来连接文件路径,就是该文件的全限定名 Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("Test.Files.File.xlsx"); //将内存流输出到磁盘文件 StreamToFile(stream, filename); stream.Close(); ``` 其中StreamToFile方法代码: ``` public static void StreamToFile(Stream stream, string fileName) { // 把 Stream 转换成 byte[] byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); // 设置当前流的位置为流的开始 stream.Seek(0, SeekOrigin.Begin); // 把 byte[] 写入文件 FileStream fs = new FileStream(fileName, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); bw.Write(bytes); bw.Close(); fs.Close(); } ``` ###关键 将解决方案内的文件读取成内存流 ``` System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("xxxx"); ``` 此外如果该方法返回的Stream对象 为空,请确认是否忘记设置文件为**嵌入的资源**,另外检查全限定路径是否正确。可以使用以下方法获取当前解决方案内可读取的所有全限定资源名: ``` string[] names = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames(); ```
上一章:C# WPF MVVM实现百万级数据列表丝滑流畅加载显示
下一章:C# WPF TextBox文字垂直居中使用VerticalContentAlignment=“Center”失效的问题