1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UiPath】読み取り専用ファイルを削除する小技

Posted at

実はUiPathで読み取り専用ファイルを削除する場合、Deleteアクティビティだけでは削除できない。これは、.NETが読み取り専用ファイルを削除できない仕様になっているからである。

試しに、読み取り専用ファイルをDeleteアクティビティのみで削除してみる

1.読み取り専用ファイルの準備

image.png

2.読み取り専用ファイルを削除するアクティビティを準備

以下の通り、DeleteFileアクティビティで1.で準備したファイルを削除してみる。
image.png

3.エラー発生

このように、通常、右クリック>削除できるファイルでもUiPathでは、エラーではじかれてしまう。
image.png

4.回避策

Invoke Codeを用いて、以下のコードを入力する。

File.SetAttributes(“ファイルフルパス”, FileAttributes.Normal)

File.SetAttributes("ファイルフルパス", FileAttributes.Normal)は、指定されたファイルの属性を設定するためのコード。
具体的には、このコードの意味は以下の通り

  • File.SetAttributes:

    • System.IO.Fileクラスの静的メソッドで、ファイルの属性を設定する
  • "delete-me.txt":

    • 属性を設定する対象のファイル名です。この場合、カレントディレクトリにある「delete-me.txt」ファイルの属性が設定される
  • FileAttributes.Normal:

    • ファイルの属性をNormal(通常)に設定します。この属性は、ファイルが特別な属性(読み取り専用、隠しファイル、システムファイルなど)を持たないことを意味する
簡単にまとめると:

このコードは、"delete-me.txt"というファイルの属性を通常の状態(特別な属性が付いていない状態)にリセットする。たとえば、ファイルが以前に「読み取り専用」や「隠しファイル」などの属性を持っていた場合、このコードを実行することで、それらの属性が解除される。

5.改善後の処理結果

一度、削除対象のファイルを通常に戻して、削除したことで処理は正常に終了した。
image.png

処理結果

image.png

image.png

6.まとめ

今回の事象は読み取り専用ファイルでも削除はできるだろうという思い込みから、発生したバグだが、こういったことは要件定義の段階から懸念するべきなので、些細な事でも実際に動かしてから回答するように心がけようと思った。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?