[C# File] ファイル操作方法まとめ
ファイルのタイムスタンプ操作
ファイルのタイムスタンプを取得
ファイルの作成日時を取得するには、System.IO.File.GetCreationTimeメソッド
ファイルの更新日時を取得するには、System.IO.File.GetLastWriteTimeメソッド
ファイルのアクセス日時を取得するには、System.IO.File.GetLastAccessTimeメソッドを使用します。
それぞれのメソッドの引数にはファイルのパスを指定します。
戻り値は日付データ(DateTime構造体)になります。
using System;
using System.IO;
class Program
{
public static void Main()
{
// ファイルのパス
var dirPath = @"D:\source\repos\test\test\Program.cs";
// ファイルの作成日時を取得
Console.WriteLine($"作成日時: {File.GetCreationTime(dirPath)}");
// ファイルの更新日時を取得
Console.WriteLine($"更新日時: {File.GetLastWriteTime(dirPath)}");
// ファイルのアクセス日時を取得
Console.WriteLine($"アクセス日時: {File.GetLastAccessTime(dirPath)}");
}
}
作成日時: 2020/02/13 23:56:00
更新日時: 2020/04/26 19:42:17
アクセス日時: 2020/04/26 19:45:47
ファイルのタイムスタンプを設定
ファイルの作成日時を設定するには、System.IO.File.SetCreationTimeメソッド
ファイルの更新日時を設定するには、System.IO.File.SetLastWriteTimeメソッド
ファイルのアクセス日時を設定するには、System.IO.File.SetLastAccessTimeメソッドを使用します。
それぞれのメソッドの第1引数にファイルパス、第2引数には設定する日付データ(DateTime構造体)を指定します。
戻り値はありません。
using System;
using System.IO;
class Program
{
public static void Main()
{
// ファイルのパス
var filePath = @"D:\source\repos\test\test\Program.cs";
// ファイルの作成日時を取得
Console.WriteLine($"設定前 作成日時: {File.GetCreationTime(filePath)}");
// ファイルの更新日時を取得
Console.WriteLine($"設定前 更新日時: {File.GetLastWriteTime(filePath)}");
// ファイルのアクセス日時を取得
Console.WriteLine($"設定前 アクセス日時: {File.GetLastAccessTime(filePath)}");
// 現在日時を取得
var now = DateTime.Now;
Console.WriteLine($"{now}を設定");
// ファイルの作成日時を設定
File.SetCreationTime(filePath, now);
// ファイルの更新日時を設定
File.SetLastWriteTime(filePath, now);
// ファイルのアクセス日時を設定
File.SetLastAccessTime(filePath, now);
// ファイルの作成日時を取得
Console.WriteLine($"設定後 作成日時: {File.GetCreationTime(filePath)}");
// ファイルの更新日時を取得
Console.WriteLine($"設定後 更新日時: {File.GetLastWriteTime(filePath)}");
// ファイルのアクセス日時を取得
Console.WriteLine($"設定後 アクセス日時: {File.GetLastAccessTime(filePath)}");
}
}
設定前 作成日時: 2020/02/13 23:56:00
設定前 更新日時: 2020/04/26 19:42:17
設定前 アクセス日時: 2020/04/26 19:45:47
2020/04/26 19:50:15を設定
設定後 作成日時: 2020/04/26 19:50:15
設定後 更新日時: 2020/04/26 19:50:15
設定後 アクセス日時: 2020/04/26 19:50:15
ファイルを移動する(Move)
System.IO.File.Moveメソッドを使うと指定したファイルを移動することが出来ます。
第1引数には移動するファイルのパスを指定します。パスには絶対パスまたは相対パスを指定することが出来ます。相対パスはカレントディレクトリ(実行ファイルのある場所)からのパスになります。
第2引数には移動先のパスを指定します。ファイル名もこのパスで指定した名前になります。こちらも絶対パスまたは相対パスを指定することができます。
第3引数には移動先のパスに同じ名前のファイルがあった時に上書きするかどうかのフラグ(true、false)を指定します。trueを指定すると上書き、falseの場合は同じ名前のファイルがあるとエラーになります。
第3引数は省略することが出来ます。その場合false(上書きしない)になります。
戻り値はありません。
using System;
using System.IO;
class Program
{
public static void Main()
{
// 移動するファイルパス
string srcFilePath = @"D:\test.txt";
// 移動先のファイルパス(実行ファイルと同じ場所に移動)
string destFilePath = @"test.txt";
// ファイルの移動(同じ名前のファイルがある場合は上書き)
File.Move(srcFilePath, destFilePath, true);
}
}
ファイルをコピーする(Copy)
System.IO.File.Copyメソッドを使うと指定ファイルをコピーすることが出来ます。
第1引数にはコピーするファイルのパスを指定します。パスには絶対パスまたは相対パスを指定することが出来ます。相対パスはカレントディレクトリからのパスになります。
第2引数にはコピー先のパスを指定します。コピー先のファイル名もこのパスで指定した名前になります。こちらもパスには絶対パスまたは相対パスを指定することが出来ます。
第3引数にはコピー先に同じ名前のファイルがあった場合に上書きするかのフラグ(true、false)を指定します。
trueを指定すると上書きコピーされます。falseを指定すると同じ名前のファイルがあった場合はエラーになります。
using System;
using System.IO;
class Program
{
public static void Main()
{
// コピーするファイルパス
string srcFilePath = @"D:\test.txt";
// コピー先のファイルパス
string destFilePath = @"D:\test_copy.txt";
// ファイルのコピー(同じ名前のファイルがある場合は上書き)
File.Copy(srcFilePath, destFilePath, true);
}
}
指定したファイルを削除する
System.IO.File.Deleteメソッドを使うと指定したファイルを削除することが出来ます。
Deleteメソッドの引数に削除するファイルのパスを指定します。
パスは絶対パスまたは相対パスを指定します。相対パスは現在のカレントディレクトリからのパスになります。
削除するファイルが存在しない場合はなにも起きません。
using System;
using System.IO;
class Program
{
public static void Main()
{
// 削除するファイルのパス
string filePath = @"D:\yasnote\src\memo.txt";
// 指定したファイルを削除する
File.Delete(filePath);
}
}
指定したファイルが存在するか確認する
System.IO.File.Existメソッドを使うと指定したファイルが存在するか確認することができます。
引数には確認するファイルのパスを指定します。
ファイルパスは大文字、小文字は区別されません。
戻り値はファイルが存在する場合にTrue、存在しない場合はFalseが返ってきます。
ファイルパスには絶対パスまたはプログラムの実行ファイル(.exeファイル)からの相対パスが指定できます。
using System;
using System.IO;
class Program
{
public static void Main()
{
var strFilePath = @"test.txt";
if (File.Exists(strFilePath))
{
Console.WriteLine("ファイルあり");
}
else
{
Console.WriteLine("ファイルなし");
}
}
}