3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(.Net)ファイルダイアログを使うとカレントパスが変わる

例えば、下記のようなコードがあったとします。(C#)

File.WriteAllText("test.txt", "test");

OpenFileDialog dlg = new OpenFileDialog();

if (dlg.ShowDialog() == DialogResult.OK)

{

File.WriteAllText("test2.txt", "test");

}

普通に考えると、test.txt 、test2.txt 共に、exeと同じフォルダに保存されるような気がするんですが、そうではありません。

test2.txt は OpenFileDialog で開いたファイルのあるフォルダに保存されます。

カレントパスを確認する Directory.GetCurrentDirectory()System.Environment.CurrentDirectory プロパティで確認すると、パスが変わってることがよく理解できます。

ファイルダイアログ使ったとしても、exe と同じ場所に設定ファイル等保存したいときは、System.Windows.Forms.Application.StartupPath を使うといいかもしれません。