我有一个基本上从数据库创建CSV文件的程序。以下是我使用的代码
public void ExportToCSV(string row, int rowNo)
{
FileStream aFile;
try
{
if (rowNo == 0)
aFile = new FileStream(@"..\..\Check.txt", FileMode.Create);
else
aFile = new FileStream(@"..\..\Check.txt", FileMode.Append);
StreamWriter sw = new StreamWriter(aFile);
sw.WriteLine(row);
sw.Close();
}
catch (IOException ex)
{
MessageBox.Show("An IO exception has been thrown!");
MessageBox.Show(ex.ToString());
}
}
如果我从VS2010运行它,代码就可以了。 CSV文件在程序文件夹下创建。现在我希望能够将此程序安装到其他PC,因此我使用ClickOnce。现在使用ClickOnce,我不明白的是,我的程序似乎没有自己的文件夹,只是我的startmenu上的一个快捷方式,但程序运行正常。令人困惑的是我无法找到输出文件的位置。在其中一个XP工作站,我能够使用搜索找到它,但它在一些随机文件夹中,但我在Windows 7中找不到它。任何人都可以给我一个建议我做错了什么?或者我如何更改程序以便轻松部署,但我仍然可以找到文件的位置?
答案 0 :(得分:3)
解决此问题的最佳方法是在app.config中预先配置路径 此路径可以位于Environment.SpecialFolder枚举
中描述的众所周知的文件夹中在运行时,您可以通过这种方式获得文件夹的完整路径
string myFolderName = Properties.Settings.Default.OutputFolder;
string documentsFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string finalPath = Path.Combine(documentsFolder, myFolderName);
if (rowNo == 0)
aFile = new FileStream(Path.Combine(finalPath, "Check.txt", FileMode.Create);
else
aFile = new FileStream(Path.Combine(finalPath, "Check.txt", , FileMode.Append);
请参阅此处了解working with Settings
上的参考资料