//代码处理的问题是在winform打包程序中调用自身文件。此时我们如果调用Application.GetDirector().....不能获取到文件,所以通过下面代码进行处理。当然也可以将文件一起打包到安装程序,获取安装路径。
//在添加文件到project后,将其属性设置为嵌入到项目中,这样才能读取文件内容
private void GetFile()
{
string file = GetResourceText("ProjectName.FileName");
StreamWriter wr = new StreamWriter("D:\\test.xml");
wr.Write(file);
wr.close();
XmlDocument doc = new XmlDocument();
doc.LoadXml(file);
doc.Save("D:\\test.xml");
}
//用StreamReader读取文件.
private static string GetResourceText(string resourceName)
{
Assembly asm = Assembly.GetExecutingAssembly();
string[] resourceNames = asm.GetManifestResourceNames();
for (int i = 0; i < resourceNames.Length; ++i)
{
if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0)
{
using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i])))
{
if (resourceReader != null)
{
return resourceReader.ReadToEnd();
}
}
}
}
return null;
}
//在添加文件到project后,将其属性设置为嵌入到项目中,这样才能读取文件内容
private void GetFile()
{
string file = GetResourceText("ProjectName.FileName");
StreamWriter wr = new StreamWriter("D:\\test.xml");
wr.Write(file);
wr.close();
XmlDocument doc = new XmlDocument();
doc.LoadXml(file);
doc.Save("D:\\test.xml");
}
//用StreamReader读取文件.
private static string GetResourceText(string resourceName)
{
Assembly asm = Assembly.GetExecutingAssembly();
string[] resourceNames = asm.GetManifestResourceNames();
for (int i = 0; i < resourceNames.Length; ++i)
{
if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0)
{
using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i])))
{
if (resourceReader != null)
{
return resourceReader.ReadToEnd();
}
}
}
}
return null;
}