フォルダ内にファイルがあるかチェックしたい

「A」というフォルダ内にファイルがあるかどうかのチェックをしたいです。
今の状態は
①代入 CSV=Directory.GetFiles(CSV読込フォルダーパス,CSV検索パターン)
②繰返し(コレクションの各要素)
繰返し [item] コレクション内の各要素[CSV]
としているのですが①と②の間にフォルダ内が空だったら3分後にまたフォルダ内を見に行くということをさせたいです。
シーケンス内なので条件分岐(If-Then-Else)を使いたいなと思っています。
どなたか教えていただけるとありがたいです。
よろしくお願いいたします。

こんにちは

実現したいことは例えば以下で可能かと思います。(下記はサンプルレベルなので、実際にはWhileループを抜ける条件を付ける、並列処理等が必要になると思いますが)

別のアプローチとしてFileChangeTriggerを使うとファイルが追加された
タイミングで後続の処理を行うことも可能です。
このあたりはバージョンによって組み合わせるアクティビティが異なりますのでご注意ください。
(最新はTrigger Scopeになっています。)

ご返答ありがとうございます。
ファイル変更トリガーが便利かなと思いそちらでいったんチャレンジしてみました。
このトリガースコープの配置ですが

トリガースコープ
トリガースコープ内⇒アクション⇒シーケンス
1 代入 CSV=Directory.GetFiles(CSV読込フォルダーパス,CSV検索パターン)
2 繰返し(コレクションの各要素)
でよいのでしょうか。

でもこれだと、何も変化のない最初の1回目は読み取らないようだったので

①代入 CSV=Directory.GetFiles(CSV読込フォルダーパス,CSV検索パターン)
②繰返し(コレクションの各要素)
③トリガースコープ
トリガースコープ内⇒アクション⇒シーケンス
1 代入 CSV=Directory.GetFiles(CSV読込フォルダーパス,CSV検索パターン)
2 繰返し(コレクションの各要素)
と同じ処理を2重に置いたらよいのでしょうか。
ご教授よろしくお願いいたします。

こんにちは

お察しのとおり、ファイル変更トリガーは変更を検知することしかできませんので、既存のファイルは処理の対象にできません。
そのため、既存のファイルの処理を別に行う必要があります。

一般的にトリガーが有効なケースは、いつ変化が起こるかわからないケースを、ある程度長い期間監視するケースに有利です。(逆に言えば、3分後に一度確認すれば良いだけの場合は不要かもしれません)今回のケースはこれに該当しますでしょうか?

そうであるとしますと、まず既存ファイルの処理が必要ですので、GetFilesで一覧を取得して各ファイルを処理するロジックを組みます。

一方のトリガーの方は、変化を1ファイル単位で検知しますので、GetFilesは不要です
ファイル変更トリガーのフィルターで"*.csv"を指定しておくと、csvのみの変化を検知できます。
上記例のようにアクション内のargs.FileChangeInfoで変化を検知したファイルの情報を
取得できますのでこれをもとに必要な処理を記述します。

既存ファイルの処理とトリガースコープは直列に並べても良いですが、既存ファイルの処理中の変化を検知できない可能性もあるので、並列アクティビティ内で並べて処理したほうが良いかもしれません。

1 Like

そうなのですね。
今回は3分に1回フォルダ内を確認するので繰返しの中で処理をさせたいと思います。
ありがとうございました。

1 Like