はじめに
UiPathでの自動化プロセスを構築する際、ファイルやフォルダの操作は避けて通れない重要な要素です。
記事前半ではディレクトリとファイル情報の取得方法について、後半ではファイルの作成・読み書き方法について詳しく解説するので、ぜひ参考にしてください。

ディレクトリ(フォルダー)操作
Directory.Exists | ディレクトリの存在確認
構成:Directory.Exists(引数:確認したいディレクトリのパス文字列)
指定したディレクトリが存在するかどうかを確認するメソッドです。
Boolean型(True/False)の値を返すため、条件分岐で利用できます。
使用例
Directory.Exists("C:\UiPath\Projects") → True (指定したフォルダが存在する場合)
Directory.Exists("C:\NonExistingFolder") → False (指定したフォルダが存在しない場合)
Directory.CreateDirectory | 新しいディレクトリを作成
構成:Directory.CreateDirectory(引数:作成したいディレクトリのパス文字列)
指定したパスに新しいディレクトリを作成します。
親ディレクトリが存在しない場合は、必要なすべての親ディレクトリも同時に作成してくれます。
使用例:
Directory.CreateDirectory("C:\UiPath\NewFolder") → 「NewFolder」というディレクトリを作成
Directory.CreateDirectory("C:\UiPath\Reports\2025\April") → 必要な親ディレクトリも含めて一気に作成
Directory.Delete | ディレクトリを削除
構成:Directory.Delete(引数1:削除したいディレクトリのパス, 引数2:サブディレクトリも削除するかのブール値)
指定したディレクトリを削除します。第2引数にはTrue/Falseが指定可能です。
第2引数がFalse
親ディレクトリが空でないと例外が発生して削除できません。
Directory.Delete("C:\test", False)
"C:\test" にファイルやサブフォルダがあると「IOException」が発生
第2引数がTrue
指定フォルダ内のファイル・サブディレクトリをすべて削除した上で、指定フォルダを削除します。
Directory.Delete("C:\test", True)
"C:\test" にファイルやサブフォルダがあっても削除可能
削除は取り消せない操作なので、間違ったディレクトリを削除しないよう十分に注意が必要です。
Directory.GetDirectories | ディレクトリ内のサブディレクトリを取得
構成:Directory.GetDirectories(引数1:親ディレクトリのパス, [引数2:検索パターン], [引数3:検索オプション])
指定したディレクトリ内のすべてのサブディレクトリのパスを文字列配列として返します。
検索パターンを指定すると、特定の名前パターンに一致するディレクトリのみを取得できます。
使用例
Directory.GetDirectories("C:\UiPath") → {"C:\UiPath\Projects", "C:\UiPath\Reports", ...} (すべてのサブディレクトリを取得)
Directory.GetDirectories("C:\UiPath", "R*") → {"C:\UiPath\Reports", "C:\UiPath\Results"} (「R」で始まるディレクトリのみ取得)
Directory.GetFiles | ディレクトリ内のファイルを取得
構成:Directory.GetFiles(引数1:ディレクトリのパス, [引数2:検索パターン], [引数3:検索オプション])
指定したディレクトリ内のすべてのファイルのパスを文字列配列として返します。
検索パターンを使って特定の種類のファイルだけを取得することも可能です。
使用例
Directory.GetFiles("C:\UiPath\Reports") → {"C:\UiPath\Reports\report1.xlsx", "C:\UiPath\Reports\data.txt", ...} (すべてのファイルを取得)
Directory.GetFiles("C:\UiPath\Reports", "*.xlsx") → {"C:\UiPath\Reports\report1.xlsx", "C:\UiPath\Reports\report2.xlsx"} (Excelファイルのみ取得)
Directory.Move | ディレクトリを新しい場所に移動
構成:Directory.Move(引数1:移動元ディレクトリのパス, 引数2:移動先のパス)
ディレクトリとその内容をすべて新しい場所に移動します。
これはディレクトリの名前を変更する場合にも使用できます。
移動先に同名のディレクトリが既に存在する場合はエラーになります。
使用例
Directory.Move("C:\UiPath\OldReports", "C:\UiPath\ArchivedReports") → ディレクトリを新しい場所に移動
Directory.Move("C:\UiPath\Reports", "C:\UiPath\MonthlyReports") → ディレクトリ名を変更
ファイル情報と Path クラス
File.Exists | ファイルの存在を確認
構成:File.Exists(引数:確認したいファイルのパス文字列)
指定したファイルが存在するかどうかを確認します。
使用例
File.Exists("C:\UiPath\data.xlsx") → True (ファイルが存在する場合)
File.Exists("C:\UiPath\missing.txt") → False (ファイルが存在しない場合)
Path.GetExtension | ファイル拡張子を取得
構成:Path.GetExtension(引数:ファイルのパス文字列)
ファイルパスから拡張子部分(ピリオドを含む)を抽出します。ファイルの種類を判断したい場合に便利です。
使用例
Path.GetExtension("C:\UiPath\report.xlsx") → ".xlsx" (Excelファイルの拡張子)
Path.GetExtension("document.pdf") → ".pdf" (PDFファイルの拡張子)
Path.GetExtension("C:\UiPath\README") → "" (拡張子がない場合は空文字を返す)
Path.GetFileName | パスからファイル名を取得
構成:Path.GetFileName(引数:ファイルのパス文字列)
ファイルパスからファイル名部分(拡張子を含む)を取得します。
フルパスからファイル名だけを抽出したい場合に使用します。
使用例
Path.GetFileName("C:\UiPath\Reports\monthly_report.xlsx") → "monthly_report.xlsx" (ファイル名と拡張子)
Path.GetFileName("C:\UiPath\README.md") → "README.md" (ファイル名と拡張子)
Path.GetFileNameWithoutExtension | 拡張子なしのファイル名を取得
構成:Path.GetFileNameWithoutExtension(引数:ファイルのパス文字列)
ファイルパスからファイル名部分のみを取得し、拡張子は除外します。
ファイル名だけを使いたい場合に便利です。
使用例
Path.GetFileNameWithoutExtension("C:\UiPath\Reports\monthly_report.xlsx") → "monthly_report" (拡張子なしのファイル名)
Path.GetFileNameWithoutExtension("data.csv") → "data" (拡張子なしのファイル名)
Path.GetDirectoryName | フルパスからディレクトリパスを取得
構成:Path.GetDirectoryName(引数:ファイルまたはディレクトリのパス文字列)
ファイルパスからディレクトリ部分のみを取得します。
ファイルが存在するフォルダを特定したい場合に使用します。
使用例
Path.GetDirectoryName("C:\UiPath\Reports\monthly_report.xlsx") → "C:\UiPath\Reports" (ディレクトリパス)
Path.GetDirectoryName("C:\UiPath\README.md") → "C:\UiPath" (ディレクトリパス)
Path.Combine | 複数のパス文字列を結合
構成:Path.Combine(引数1:パス1, 引数2:パス2, [追加のパス...])
複数のパス文字列を正しく結合します。
スラッシュやバックスラッシュを手動で管理する必要がなくなり、パスの結合ミスを防げます。
使用例
Path.Combine("C:\UiPath", "Reports") → "C:\UiPath\Reports" (パスを正しく結合)
Path.Combine("C:\UiPath\", "Reports", "2025", "April") → "C:\UiPath\Reports\2025\April" (複数のパスを結合)
Path.Combine("C:\UiPath", "data.xlsx") → "C:\UiPath\data.xlsx" (ディレクトリとファイル名を結合)

基本的なファイル操作
File.Create | 新しいファイルを作成
構成:File.Create(引数:作成するファイルのパス文字列)
指定したパスに新しい空のファイルを作成します。
同名のファイルが既に存在する場合は上書きされるので注意が必要です。
使用例
File.Create("C:\UiPath\newfile.txt") → 新しい空のテキストファイルを作成し、FileStreamを返す
// 通常は作成後にStreamを閉じる必要があります
var fileStream = File.Create("C:\UiPath\newfile.txt")
fileStream.Close()
File.Delete | ファイルを削除
構成:File.Delete(引数:削除するファイルのパス文字列)
指定したファイルを削除します。
削除操作は元に戻せないので、間違ったファイルを削除しないよう注意が必要です。
使用例
File.Delete("C:\UiPath\oldfile.txt") → 指定したファイルを完全に削除
File.Copy | ファイルを新しい場所にコピー
構成:File.Copy(引数1:コピー元ファイルのパス, 引数2:コピー先のパス, [引数3:上書きするかのブール値])
ファイルを新しい場所にコピーします。
第3引数にTrueを指定すると、コピー先に同名のファイルが存在する場合に上書きします。
使用例
File.Copy("C:\UiPath\report.xlsx", "C:\UiPath\Backup\report.xlsx") → ファイルをコピー(コピー先に同名ファイルがあるとエラー)
File.Copy("C:\UiPath\data.txt", "C:\UiPath\Archive\data.txt", True) → ファイルをコピー(コピー先に同名ファイルがあれば上書き)
File.Move | ファイルを新しい場所に移動
構成:File.Move(引数1:移動元ファイルのパス, 引数2:移動先のパス)
ファイルを新しい場所に移動します。これはファイルの名前を変更する場合にも使用できます。
移動先に同名のファイルが既に存在する場合はエラーになります。
使用例
File.Move("C:\UiPath\oldname.txt", "C:\UiPath\newname.txt") → ファイル名を変更
File.Move("C:\UiPath\report.xlsx", "C:\UiPath\Archive\report.xlsx") → ファイルを別のフォルダに移動
テキストファイル操作
File.ReadAllText | ファイルからすべてのテキストを読み取る
構成:File.ReadAllText(引数1:ファイルのパス, [引数2:エンコーディング])
テキストファイルの内容をすべて読み取り、1つの文字列として返します。
小さなテキストファイルを簡単に読み込みたい場合に便利です。
使用例
File.ReadAllText("C:\UiPath\sample.txt") → "これはサンプルテキストです。\r\n2行目の内容です。" (ファイル内容全体を1つの文字列として取得)
File.ReadAllText("C:\UiPath\utf8file.txt", Encoding.UTF8) → "日本語のテキストファイル" (UTF-8エンコーディングを指定して読み取り)
File.ReadAllLines | ファイルからすべての行を文字列配列として読み取る
構成:File.ReadAllLines(引数1:ファイルのパス, [引数2:エンコーディング])
テキストファイルの各行を読み取り、文字列配列として返します。
CSVファイルや行単位で処理したいデータに便利です。
使用例
File.ReadAllLines("C:\UiPath\data.txt") → {"1行目のテキスト", "2行目のテキスト", "3行目のテキスト"} (各行を配列の要素として取得)
File.ReadAllLines("C:\UiPath\list.txt", Encoding.UTF8) → {"項目1", "項目2", "項目3"} (UTF-8エンコーディングを指定して各行を読み取り)
File.WriteAllText | テキストをファイルに書き込む
構成:File.WriteAllText(引数1:ファイルのパス, 引数2:書き込むテキスト, [引数3:エンコーディング])
指定したテキストをファイルに書き込みます。
ファイルが存在しない場合は新規作成し、既に存在する場合は上書きします。
使用例
File.WriteAllText("C:\UiPath\output.txt", "こんにちは、UiPath!") → "こんにちは、UiPath!"というテキストを含むファイルを作成
File.WriteAllText("C:\UiPath\data.txt", "日本語テキスト", Encoding.UTF8) → UTF-8エンコーディングでテキストを書き込み
File.AppendAllText | テキストをファイルに追加
構成:File.AppendAllText(引数1:ファイルのパス, 引数2:追加するテキスト, [引数3:エンコーディング])
既存のファイルにテキストを追加します。
ファイルが存在しない場合は新規作成されます。ログファイルなどの追記に適しています。
使用例
File.AppendAllText("C:\UiPath\log.txt", "処理完了: " + DateTime.Now.ToString() + Environment.NewLine) → 既存のファイルに日時情報を追加
File.AppendAllText("C:\UiPath\data.txt", "追加テキスト", Encoding.UTF8) → UTF-8エンコーディングでテキストを追加
ストリーム操作
StreamReader | ストリームから文字を読み取る
構成:new StreamReader(引数1:ファイルパスまたはストリーム, [引数2:エンコーディング], [引数3:detectEncodingFromByteOrderMarks], [引数4:バッファサイズ])
テキストファイルを1行ずつ読み取るために使用します。
大きなファイルを効率的に処理したり、特定の条件で読み取りを制御したりする場合に便利です。
使用例
// 使用例はStreamReaderの作成と使用方法を示しています
var reader = new StreamReader("C:\UiPath\largefile.txt")
var firstLine = reader.ReadLine() → "ファイルの1行目" (ファイルから1行読み取る)
var nextTenChars = reader.Read(new char[10], 0, 10) → 10 (次の10文字を読み取り、読み取った文字数を返す)
reader.Close() // 必ずStreamReaderを閉じること
StreamWriter | ストリームに文字を書き込む
構成:new StreamWriter(引数1:ファイルパスまたはストリーム, [引数2:追加モードかどうか], [引数3:エンコーディング], [引数4:バッファサイズ])
テキストファイルに行単位で書き込むために使用します。
大量のデータを効率的に書き込んだり、書き込み操作を細かく制御したりする場合に適しています。
使用例
// 使用例はStreamWriterの作成と使用方法を示しています
var writer = new StreamWriter("C:\UiPath\output.txt")
writer.WriteLine("1行目のテキスト") → ファイルに1行書き込む
writer.Write("改行なしテキスト") → 改行せずにテキストを書き込む
writer.Close() // 必ずStreamWriterを閉じること
// 追記モード
var appendWriter = new StreamWriter("C:\UiPath\log.txt", True)
appendWriter.WriteLine("新しいログエントリ") → 既存ファイルに追記
appendWriter.Close()
一時的・特殊なファイル操作
Path.GetTempFileName | 一意の名前の一時ファイルを作成
構成:Path.GetTempFileName()
システムの一時フォルダに一意の名前を持つ空の一時ファイルを作成し、そのフルパスを返します。
一時的な作業ファイルが必要な場合に便利です。
使用例
Path.GetTempFileName() → "C:\Users\Username\AppData\Local\Temp\tmp1A2B.tmp" (一時ファイルを作成してパスを返す)
Path.GetTempPath | 一時フォルダへのパスを取得
構成:Path.GetTempPath()
システムの一時フォルダへのパスを返します。一時ファイルを自分で管理したい場合に使用します。
使用例
Path.GetTempPath() → "C:\Users\Username\AppData\Local\Temp\" (システムの一時フォルダパスを取得)
Environment.GetFolderPath | 特殊フォルダへのパスを取得
構成:Environment.GetFolderPath(引数:Environment.SpecialFolderの列挙値)
デスクトップ、マイドキュメント、アプリケーションデータフォルダなどの特殊フォルダへのパスを取得します。
使用例
Environment.GetFolderPath(Environment.SpecialFolder.Desktop) → "C:\Users\Username\Desktop" (デスクトップフォルダのパス)
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) → "C:\Users\Username\Documents" (マイドキュメントフォルダのパス)
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) → "C:\Users\Username\AppData\Roaming" (アプリケーションデータフォルダのパス)

よくある質問(FAQ)
- これらのメソッドを使うために特別な参照設定やインポートが必要ですか?
-
基本的に特別な設定は不要です。System.IOはUiPathの標準参照に含まれています。
- ファイルの読み書きに複数の方法がありますが、どう使い分ければよいですか?
-
小さなファイルなら
File.ReadAllText
やFile.WriteAllText
がシンプルで使いやすいです。大きなファイル(数MBを超えるもの)や行単位の処理が必要ならStreamReader
/StreamWriter
を使いましょう。CSVのような構造化データはFile.ReadAllLines
が便利です。 - 「エンコーディング」とは何で、なぜ指定が必要な場合があるのですか?
-
エンコーディングとは、テキストをコンピュータが処理できる形式に変換する方式のことです。日本語を含むテキストファイルを扱う場合は、正しいエンコーディング(UTF-8やShift-JISなど)を指定しないと文字化けが発生します。
- 他のプログラムで開いているファイルにアクセスしようとするとどうなりますか?
-
通常、他のプログラムが書き込みモードで開いているファイルに対して書き込み操作を行おうとすると、「ファイルが別のプロセスで使用されているため、アクセスできません」というエラーが発生します。この場合、ファイルが解放されるのを待つか、別のアプローチを検討する必要があります。
- File.Createメソッドの戻り値は何で、どのように使いますか?
-
メソッドは
FileStream
オブジェクトを返します。このストリームを使ってファイルにデータを書き込むことができますが、使用後は必ずClose()
メソッドを呼び出してリソースを解放する必要があります。単にファイルを作成するだけなら、File.WriteAllText(path, "")
という方法もあります。 - StreamReaderやStreamWriterを「閉じる」必要があるのはなぜですか?
-
ストリームはシステムリソースを使用します。
Close()
メソッドを呼び出さないと、リソースが解放されず、パフォーマンスの低下やファイルロックの問題を引き起こす可能性があります。 - これらのメソッドで扱える最大ファイルサイズはどれくらいですか?
-
File.ReadAllTextや
File.ReadAllLines
は、ファイル全体をメモリに読み込むため、大きなファイル(数百MB以上)では「OutOfMemoryException」が発生する可能性があります。
大きなファイルを処理する場合は、StreamReader
を使って少しずつ読み込む方法をお勧めします。 - 相対パスと絶対パスの違いは何ですか?
-
絶対パスはドライブ名やルートディレクトリからの完全なパス(例:C:\folder\file.txt)で、どこからでも同じファイルを指します。相対パスは現在の作業ディレクトリからの相対的な位置(例:folder\file.txt)を示します。
まとめ
この記事では、UiPathで使用できる主要なファイルフォルダ操作メソッドを詳しく紹介しました。
UiPathでファイル操作を使いこなすには、次のポイントを押さえておくことが重要です。
- ディレクトリ操作メソッド(Directory.Exists, Directory.CreateDirectory など)でフォルダを効率的に管理する
- ファイル情報メソッド(Path.GetFileName, Path.Combine など)でパス操作を正確に行う
- ファイル操作メソッド(File.Copy, File.Move など)でファイルを適切に処理する
- テキストファイル操作メソッド(File.ReadAllText, File.WriteAllText など)でデータの読み書きを行う
これらのメソッドを適切に組み合わせることで、複雑なファイル処理を含む自動化プロセスを簡単に構築できます。
今回学んだメソッドを実際のUiPathプロジェクトで活用して、効率的な自動化ワークフローを作成してみてください!
コメント