【入門編】VB.NETで実現するファイル・フォルダ操作:System.IO.FileとDirectoryクラスの基本レシピ – Visual Basic (VB / VB.NET)解析バイブル

スポンサーリンク

VB.NETで「ファイル操作」を極める:レガシーからの卒業とモダンな開発の流儀

こんにちは。システム開発の現場で日々コードと対峙していると、「とりあえず動けばいい」というコードと「10年先も保守できる」コードの決定的な差を感じることがあります。

特に、VB6の時代から続く`FileSystem`モジュール(`Kill`や`FileCopy`など)を使い続けているあなた。今日でその習慣と決別しましょう。

今回は、モダンな.NET開発の必須スキルである`System.IO`名前空間を用いた、堅牢で美しいファイル・フォルダ操作の極意を伝授します。

—

1. なぜ「FileSystem」を使ってはいけないのか?

VBAや古いVB.NETのコードでよく見かける`Kill`や`Dir`といった命令は、実は「レガシーな遺産」です。これらはOSの仕様変更に弱く、例外処理が非常に書きにくいという欠点があります。

一方、`.NET`が提供する`System.IO`名前空間は、オブジェクト指向の設計に基づいています。「ファイルはオブジェクトである」という考え方にシフトすることで、あなたのコードは劇的に安定します。

—

2. 必須の呪文:Imports System.IO

まず、コードの冒頭で以下の「宣言」を忘れずに行ってください。これがないと、毎回長い名前を書く羽目になります。

‘ ファイル操作の機能をすべて呼び出せるようにする
Imports System.IO

—

3. 実践!ファイルとフォルダを操る3つの基本レシピ

【レシピ1】ファイルの存在確認と削除(安全な処理)

「ファイルがなければエラーになる」という状況は、プログラマーにとって最も避けたい事態です。`Exists`メソッドでガードを固めましょう。

Public Sub SafeDeleteFile(filePath As String)
‘ 存在チェックを挟むことで、例外を未然に防ぐ
If File.Exists(filePath) Then
Try
File.Delete(filePath)
Console.WriteLine(“ファイルを削除しました。”)
Catch ex As IOException
‘ ファイルが使用中などのエラーをキャッチ
Console.WriteLine($”削除に失敗しました: {ex.Message}”)
End Try
Else
Console.WriteLine(“ファイルが存在しません。”)
End If
End Sub

【レシピ2】フォルダの作成(階層ごと一気に)

フォルダが存在しないときにエラーで止まるのではなく、「あれば何もしない、なければ作る」という設計がプロの流儀です。

Public Sub EnsureFolderExists(folderPath As String)
‘ Directory.Existsで確認し、なければ作成する
If Not Directory.Exists(folderPath) Then
Directory.CreateDirectory(folderPath)
Console.WriteLine(“フォルダを作成しました。”)
End If
End Sub

【レシピ3】ファイルの中身を読み書きする(最速の書き方)

`StreamReader`や`StreamWriter`は強力ですが、単一のテキストファイルなら、もっとスマートな方法があります。

Public Sub WriteAndReadText(filePath As String)
Dim content As String = “VB.NETの極意を学ぶ”

‘ 書き込み:自動的にファイルを閉じるところまでやってくれる
File.WriteAllText(filePath, content)

‘ 読み込み
Dim readContent As String = File.ReadAllText(filePath)
Console.WriteLine($”読み取った内容: {readContent}”)
End Sub

—

4. 初学者が陥りやすい「3つの罠」

現場でよく見る「動かなくなる原因」を先回りして教えます。

1. 「使用中のファイル」問題: ファイルを操作した直後に別の処理を行うと、OSがファイルを掴んだままでエラーになることがあります。処理の後は必ず「閉じる」意識を持ちましょう(`Using`ブロックを使うのが理想です)。
2. パスの結合ミス: 文字列連結で `folder & “\” & file` と書くのはやめましょう。`Path.Combine(folder, file)` を使えば、OSごとの区切り文字の違いを自動解決してくれます。
3. 例外処理の欠如: ネットワークドライブ上のファイル操作は、切断されるリスクが常にあります。`Try-Catch`による防御は、VB.NETプログラマーの嗜みです。

—

最後に:ここをクリアすれば、あなたはもう脱初心者です

いかがでしたか?`System.IO`を使えるようになるだけで、あなたの書くプログラムの信頼性は段違いに向上します。

「マクロの記録」のような場当たり的なコードから、設計思想を持ったコードへ。最初は難しく感じるかもしれませんが、一度この作法を身につければ、どんな複雑なシステムでも怖くありません。

一つずつで構いません。まずは上記のコードをあなたの環境で動かしてみてください。「動いた!」という感覚こそが、最高のエンジニアへの第一歩です。

応援していますよ。また分からないことがあれば、いつでも聞きに来てくださいね。

タイトルとURLをコピーしました