質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

F#

F#は、MicroSoftが開発した.NET Framework 向けのマルチパラダイムプログラミング言語です。 Visual Studio 2010 より標準搭載されました。

Q&A

解決済

1回答

749閲覧

.NETのSystem.IO.FileSystemWatcherで名前が1文字のファイル・フォルダを対象にしたい

s_tn

総合スコア1

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

F#

F#は、MicroSoftが開発した.NET Framework 向けのマルチパラダイムプログラミング言語です。 Visual Studio 2010 より標準搭載されました。

0グッド

1クリップ

投稿2021/05/27 02:56

ネット検索で同様の問題について、記述が見つけられなかったので質問を作成しました。
ご教示いただけますと幸いです。

環境

  • Windows 10: 20H1 (19043.985)
  • .NET SDK (5.0.300)

前提・実現したいこと

  • 名前が1文字のファイル・フォルダを含む、ファイルシステムの変更検知。

発生している問題・エラーメッセージ

System.IO.FileSystemWatcherで指定したディレクトリ直下において、

  • 名前が1文字のファイル・フォルダの作成が検知されない。
  • 名前が1文字のファイル・フォルダの削除が検知されない。
  • 名前が1文字のファイル・フォルダの内容の変更が検知されない。
  • 名前を1文字に変更時にFullPathNameが取得できない。

該当のソースコード

fsharp

1let fileSystemWatcher = new System.IO.FileSystemWatcher @"ディレクトリへのパス" 2fileSystemWatcher.IncludeSubdirectories <- true 3 4let OnChanged (e: System.IO.FileSystemEventArgs) = 5 printfn "変更: %s" e.FullPath 6 printfn "----" 7 8let OnCreated (e: System.IO.FileSystemEventArgs) = 9 printfn "作成: %s" e.FullPath 10 printfn "----" 11 12let OnDeleted (e: System.IO.FileSystemEventArgs) = 13 printfn "削除: %s" e.FullPath 14 printfn "----" 15 16let OnRenamed (e: System.IO.RenamedEventArgs) = 17 printfn "名前変更:" 18 printfn "旧: %s" e.OldFullPath 19 printfn "新: %s" e.FullPath 20 printfn "----" 21 22fileSystemWatcher.Changed.Add OnChanged 23fileSystemWatcher.Created.Add OnCreated 24fileSystemWatcher.Deleted.Add OnDeleted 25fileSystemWatcher.Renamed.Add OnRenamed 26 27fileSystemWatcher.EnableRaisingEvents <- true 28 29printfn "----" 30stdin.ReadLine() |> ignore 31 32fileSystemWatcher.EnableRaisingEvents <- false 33fileSystemWatcher.Dispose()

試したこと

Filterを規定値から変更する。

fsharp

1fileSystemWatcher.Filter <- ""

NotifyFilterに指定可能な値を全て設定する。

fsharp

1fileSystemWatcher.NotifyFilter <- System.IO.NotifyFilters.Attributes ||| System.IO.NotifyFilters.CreationTime ||| System.IO.NotifyFilters.DirectoryName ||| System.IO.NotifyFilters.FileName ||| System.IO.NotifyFilters.LastAccess ||| System.IO.NotifyFilters.LastWrite ||| System.IO.NotifyFilters.Security ||| System.IO.NotifyFilters.Size

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hihijiji

2021/05/27 04:04

C#にて確認してみました。 .Net Core 3.0, .Net Core 3.1, .Net 5.0 にて再現しました。 .Net Core 2.x, .Net Core 1.x だと正常のようです。 FileSystemWatcher のバグでしょうね。
s_tn

2021/05/27 05:39

hihijijiさん .NETのバージョン変更を考える際の参考になりました。 ご丁寧な回答、ありがとうございます。 userisgodさん すみません、.NETのIssueに載っている問題なのですね。 教えて頂きありがとうございます。
guest

回答1

0

ベストアンサー

検索しただけですけど、GitHubにissueがopenですね。
FileSystemWatcher fails to trigger a file or Dir with a single char

I ran the same code in with .NET 4.7 and it works correctly

I've Windows 10/1909 & .NET 5.0.101

というので5で入ったバグなのでしょうかね。

投稿2021/05/27 04:42

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s_tn

2021/05/27 05:40

ご回答いただきありがとうございます。 .NETのバージョンを変えて試してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問