VB.NETでファイルのコピー・移動・削除を完全ガイド!初心者でもわかるファイル操作
生徒
「VB.NETでファイルを別の場所にコピーしたり、移動させたりする方法を知りたいです!」
先生
「いいですね。ファイルの整理はプログラムの基本ですよ。VB.NETでは、File.CopyやFile.Moveを使うことで、普段皆さんがマウスでドラッグしているような操作をコードで書くことができるんです。」
生徒
「難しそうですが、私にもできますか?」
先生
「もちろんです。コピー、移動、そして不要なファイルを消す削除の方法まで、順番に解説しますね。まずは基本のコピーから見ていきましょう!」
1. ファイルをコピーするFile.Copyとは?
プログラムを作っていると、大切なデータをバックアップしたり、同じ内容のファイルを別のフォルダーにも作ったりしたい場面がよくあります。VB.NETでこれを実現するのがFile.Copy(ファイルコピー)という命令です。コピーとは、元のファイルはそのまま残しておき、全く同じ内容の「分身」を別の場所に作成することを言います。
パソコンの操作に慣れていない方のために説明すると、これは「書類をコピー機にかけて、別の場所に置く」のと同じです。VB.NETでは、コピー元の場所と、コピー先の名前を指定するだけで、自動的にこの作業を行ってくれます。基本的には上書き禁止の設定になっているので、安全に使うことができます。まずは実際のコードを見てみましょう。
Imports System.IO
Module Module1
Sub Main()
' コピーしたい元のファイルのパス
Dim motoFile As String = "C:\temp\sample.txt"
' コピーした後の新しいファイルのパス
Dim sakiFile As String = "C:\temp\sample_backup.txt"
' File.Copyを使ってコピーを実行します
' 第1引数に元、第2引数に先を指定します
File.Copy(motoFile, sakiFile)
Console.WriteLine("ファイルのコピーが完了しました!")
End Sub
End Module
2. ファイルを移動するFile.Moveの使い方
コピーの次は「移動」について学びましょう。移動はFile.Move(ファイルムーブ)を使います。コピーとの違いは、移動が終わると「元の場所からファイルが消える」という点です。これは、机の上の書類をカバンの中に移すようなものです。書類は一つしかありませんよね。プログラムでは、フォルダーの整理を自動化する時によく使われます。
ここで初心者が間違えやすいポイントがあります。移動先の名前を元の名前と違うものにすると、結果的に「ファイル名の変更」と同じことになります。実はVB.NETには「名前変更」という名前の命令はなく、このFile.Moveを使って名前を変えるのが一般的な方法です。一つの道具で移動も名前変更もできるので、とても便利ですね。
Imports System.IO
Module Module2
Sub Main()
' 移動したいファイル
Dim oldPath As String = "C:\temp\old_name.txt"
' 移動した後の場所と新しい名前
Dim newPath As String = "C:\work\new_name.txt"
' ファイルが存在するか確認してから移動すると安全です
If File.Exists(oldPath) Then
' File.Moveで場所と名前を変更します
File.Move(oldPath, newPath)
Console.WriteLine("移動(名前変更)に成功しました。")
Else
Console.WriteLine("元のファイルが見つかりません。")
End If
End Sub
End Module
3. 難しい用語のやさしい解説
ここで、プログラムを読みやすくするために知っておくべき重要な単語を解説します。初めてパソコンに触れる方でも、これだけ押さえておけば大丈夫です。
- パス (Path): ファイルがどこにあるかを示す「住所」です。Cドライブの、tempという引き出しの、中にあるファイル、という風に指定します。
- 引数 (ひきすう): 命令を出す時に渡す情報のことです。File.Copy(A, B) の「A」や「B」がこれに当たります。
- 例外 (Exception): プログラム実行中に起きるエラーのことです。例えば、移動先に同じ名前のファイルが既にあったりすると発生します。
これらの言葉を覚えると、プログラミングの解説書がぐっと読みやすくなります。特に「パス」は、ファイル操作において最も頻繁に使う言葉なので、自分のパソコンのどこにファイルがあるか意識する習慣をつけると上達が早くなりますよ。
4. 不要なファイルを消すFile.Delete
データの整理には、いらなくなったファイルを消す作業も欠かせません。これを行うのがFile.Delete(ファイルデリート)です。この命令を使うと、指定したファイルがパソコンから完全に削除されます。ゴミ箱を通らずに直接消えてしまうので、使う時は十分注意が必要です。
初心者の皆さんにぜひ覚えておいてほしいのは、「消そうとしたファイルがそもそも無くても、エラーにならない」という特徴です。これは一見便利ですが、大事なファイルを消し忘れていても気づかない可能性があるということでもあります。確実に整理したい時は、前回のレッスンで学んだFile.Existsを使って、存在を確認してから消すのが「丁寧なプログラミング」と言えます。
Imports System.IO
Module Module3
Sub Main()
' 削除したいファイルのパス
Dim gomiFile As String = "C:\temp\temp_data.txt"
' 安全のために確認してから消す例
If File.Exists(gomiFile) Then
' 削除実行
File.Delete(gomiFile)
Console.WriteLine("ファイルを削除しました。")
Else
Console.WriteLine("消すべきファイルは既にありません。")
End If
End Sub
End Module
5. 上書きコピーを許可する方法
File.Copyの基本では、コピー先に同じ名前のファイルがあるとエラーになってしまいます。しかし、設定ファイルなどを最新の状態に更新したい時は、既存のファイルを無視して「上書き」したいことがあります。その場合は、命令の最後に「True(はい)」という合言葉を付け加えます。これをプログラミングでは「第3引数にTrueを指定する」と言います。
上書きができるようになると、プログラムの柔軟性が高まります。古いデータを新しいデータで置き換える作業が一行で書けるようになるからです。ただし、上書きされた古いデータは元に戻せないので、慎重に使いましょう。以下に、上書きコピーの書き方を紹介します。
Imports System.IO
Module Module4
Sub Main()
Dim moto As String = "C:\temp\latest.dat"
Dim saki As String = "C:\config\settings.dat"
' 第3引数にTrueを入れると、上書きコピーになります
' これを入れないと、sakiが存在する場合にエラーが起きます
File.Copy(moto, saki, True)
Console.WriteLine("ファイルを最新版に上書き更新しました。")
End Sub
End Module
6. ファイル操作でのトラブルを防ぐコツ
最後に、安全にファイル操作を行うための重要なポイントをお話しします。未経験の方が陥りやすいのは、「他のソフトで開いているファイルを操作しようとする」ことです。例えば、Excelで開いている最中のファイルを、VB.NETで移動させたり削除したりすることはできません。これは、パソコンが「今使っている最中だから、勝手にいじらないで!」とロックをかけているからです。
また、Cドライブのシステムに関わる重要な場所などは、プログラムから操作しようとしても「アクセス拒否」というエラーになることがあります。練習する時は、デスクトップやドキュメントフォルダーの中に、練習用の専用フォルダーを作って行うのが一番安全です。ファイル操作をマスターすれば、毎日手作業でやっていた面倒なファイルのコピーや仕分けを、一瞬で終わらせるツールが自作できるようになりますよ。コツコツ練習して、便利なソフト作りを目指しましょう!