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ステーションの1つで、検索を使用して見つけることができましたが、ランダムなフォルダー内にありますが、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 に答える