0

我有一个基本上从数据库创建 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,我不明白的是,我的程序似乎没有自己的文件夹,而只是我的开始菜单上的一个快捷方式,但程序运行正常。令人困惑的是我找不到输出文件的位置。在其中一个 XP 站中,我能够使用搜索找到它,但它位于某个随机文件夹中,但我在 Windows 7 中找不到它。谁能给我一个建议,我做错了什么?或者我如何更改程序以便轻松部署但我仍然可以找到文件的位置?

4

1 回答 1

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); 

有关使用设置的参考资料,请参见此处

于 2012-06-08T12:31:00.397 回答