C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ファルダの扱い

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■95693 / inTopicNo.1)  ファルダの扱い
  
□投稿者/ たかだのぼぼ (1回)-(2020/09/03(Thu) 16:59:55)

分類:[C#] 

ボタンを押したらその日の日付でフォルダを作成しています。
すでにそのフォルダ名が存在していた場合には改めてフォルダを作らないように処理をしたいのですがどう記述すればいいでしょうか?
また、その処理を書かなくても再度ファルダが作成され、中のファイルが無くなったりしないのですが処理は書いた方がいいのでしょうか?

string folderName = DateTime.Today.ToString("yyyyMMdd");

string path = System.IO.Path.Combine(@"C:\", folderName);

System.IO.Directory.CreateDirectory(path)
引用返信 編集キー/
■95694 / inTopicNo.2)  Re[1]: ファルダの扱い
□投稿者/ shu (1233回)-(2020/09/03(Thu) 17:12:50)
No95693 (たかだのぼぼ さん) に返信

Directory.Existsで作成する前に存在をチェック

https://docs.microsoft.com/ja-jp/dotnet/api/system.io.directory.exists?view=netcore-3.1
引用返信 編集キー/
■95695 / inTopicNo.3)  Re[1]: ファルダの扱い
□投稿者/ 魔界の仮面弁士 (2828回)-(2020/09/03(Thu) 17:16:05)
No95693 (たかだのぼぼ さん) に返信
> string path = System.IO.Path.Combine(@"C:\", folderName);

C: ドライブのルート直下に、日付フォルダを多数生やすのは個人的にはお奨めしません。
フォルダーをひとつ用意しておき、その階層の下に配置した方が望ましいでしょう。


> すでにそのフォルダ名が存在していた場合には
> 改めてフォルダを作らないように処理をしたいのですがどう記述すればいいでしょうか?

フォルダーが対象なら、Directory.Exists メソッドで判定できます。
20200903 という「ファイル」の存在も判定するなら、File.Exists も必要でしょう。

とはいえ Directory.CreateDirectory メソッドは、
同名フォルダーがあったとしても特にエラーとはなりません。
少しでも高速に処理させたい場合には事前チェックも有効ですが、
あえてノーチェックで CreateDirectory するのも選択肢の一つです。


ノーチェックとはいっても、try〜catch 等での例外処理は必須といえます。
アクセス権限などの問題でエラーが発生することはありえますからね。
引用返信 編集キー/
■95696 / inTopicNo.4)  Re[1]: ファルダの扱い
□投稿者/ 魔界の仮面弁士 (2829回)-(2020/09/03(Thu) 17:37:12)
No95693 (たかだのぼぼ さん) に返信
> string folderName = DateTime.Today.ToString("yyyyMMdd");

本題とは関係のない蛇足ですが:

上記のコードは、コントロールパネルの地域設定によって
 "20200903" …「西暦(日本語)」
 "020903" ……「和暦」
と変化することに注意が必要です。

実行環境の地域設定に依存しないようにしたい場合には、カルチャ明示の為、
ToString の第二引数に CultureInfo を渡しておくのが安全です。
引用返信 編集キー/
■95700 / inTopicNo.5)  Re[2]: ファルダの扱い
□投稿者/ たかだのぼぼ (2回)-(2020/09/03(Thu) 20:18:49)
No95696 (魔界の仮面弁士 さん) に返信

> 実行環境の地域設定に依存しないようにしたい場合には、カルチャ明示の為、
> ToString の第二引数に CultureInfo を渡しておくのが安全です。

Directory.CreateDirectoryでできました。
また、CultureInfo の情報もありがとうございました。
引用返信 編集キー/
■95701 / inTopicNo.6)  Re[3]: ファルダの扱い
□投稿者/ たかだのぼぼ (1回)-(2020/09/03(Thu) 20:19:27)
No95700 (たかだのぼぼ さん) に返信
> ■No95696 (魔界の仮面弁士 さん) に返信
>
>>実行環境の地域設定に依存しないようにしたい場合には、カルチャ明示の為、
>>ToString の第二引数に CultureInfo を渡しておくのが安全です。
>
> Directory.CreateDirectoryでできました。
> また、CultureInfo の情報もありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ