質問: Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\" + comanyName + @"\" + productName; Directory.CreateDirectory(companyDirectry); Directory.CreateDirectory(productDirectry); return productDirectry; ``` ### 環境 Microsoft Windows 10 Pro (Version 1809) Microsoft Visual Studio Community 2017(Version 15.9.4) Microsoft .NET Framework(Version 4.7.03190)
回答: 個人的な意見を書かせてもらうと・・・ > > Windowsのファイルシステム上に、 > > C:\[ユーザ名]\AppData\Local\[会社名]\[製品名] > > といったフォルダをよく見かけますが、こういったフォルダに、 > > アプリケーションで使用するデータを格納するのが一般的なのでしょうか? > > > インストーラーを使ってインストールするタイプのアプリケーションではわりと一般的なイメージです。 これが不正解ということはありません。 > > もしそうだとして、どういったタイミングでフォルダが作成されるべきでしょうか? > > ・インストール時のみ > > ・アプリケーション実行時のみ > > ・インストール時とアプリケーション実行時 > > > 作っているアプリケーションの性質によります。 フォルダが無いと二度と起動できなくて良いならインストール時のみで良いですし(アカウント追加したユーザーは使えない)、 いつでも復帰できるような仕組みにするのでしたら二番目です。 3つ目は個人的にはありえません。 > > またどうやって、フォルダ名を取得すべきでしょうか? > > 下にソースコードのように、APIが提供してくれるアプリケーションフォルダ、 > > 会社名、製品名を組み合わせて、わざわざ自分でフォルダの文字列を作成しています。問題ないでしょうか? > > > 大体問題無いと思いますが、 パスの構築は+演算子ではなくPath.Combineを使う事をオススメします。 またディレクトリの作成は完全なパスを使って一度System.IO.Directory.CreateDirectoryを実行すれば 親フォルダが無くても一気に作成してくれます。 (あとエラー処理などは正しく行ってくださいね)