[C#] ファイルの作成日時を取得する方法

C#でファイルの作成日時を取得するには、System.IO名前空間のFileInfoクラスを使用します。

まず、FileInfoオブジェクトを作成し、対象ファイルのパスを指定します。

その後、CreationTimeプロパティを使用して作成日時を取得できます。

例えば、FileInfo fileInfo = new FileInfo("filePath");とし、DateTime creationTime = fileInfo.CreationTime;で作成日時を取得します。

この方法により、ファイルの作成日時を簡単に取得することができます。

この記事でわかること
  • FileInfoクラスを使用してファイルの作成日時を取得する方法
  • コンソールおよびGUIアプリケーションでの作成日時表示の実装例
  • 作成日時を利用したファイルのソートやバックアップの応用例
  • エラーハンドリングの重要性とその実装方法

目次から探す

ファイルの作成日時を取得する基本的な方法

C#でファイルの作成日時を取得するには、FileInfoクラスを使用するのが一般的です。

このクラスを利用することで、ファイルに関するさまざまな情報を簡単に取得できます。

以下では、FileInfoクラスの概要と、具体的な作成日時の取得手順について説明します。

FileInfoクラスの概要

FileInfoクラスは、System.IO名前空間に属しており、ファイルの情報を取得および操作するためのメソッドやプロパティを提供します。

主な特徴は以下の通りです。

スクロールできます
特徴説明
ファイル情報の取得ファイルのサイズ、作成日時、更新日時などを取得可能
ファイル操作ファイルのコピー、移動、削除などの操作が可能
パフォーマンス複数のファイル操作を行う際に、Fileクラスよりも効率的

FileInfoクラスを使った作成日時の取得手順

FileInfoクラスを使用してファイルの作成日時を取得する手順は以下の通りです。

  1. FileInfoオブジェクトを作成する。
  2. CreationTimeプロパティを使用して作成日時を取得する。

以下にサンプルコードを示します。

using System;
using System.IO;
class Program
{
    static void Main()
    {
        // FileInfoオブジェクトを作成
        FileInfo fileInfo = new FileInfo("example.txt");
        
        // 作成日時を取得
        DateTime creationTime = fileInfo.CreationTime;
        
        // 作成日時を表示
        Console.WriteLine("ファイルの作成日時: " + creationTime.ToString("yyyy/MM/dd HH:mm:ss"));
    }
}
ファイルの作成日時: 2023/10/01 14:30:00

このプログラムは、指定したファイルの作成日時を取得し、フォーマットされた形でコンソールに表示します。

CreationTimeプロパティの詳細

CreationTimeプロパティは、FileInfoクラスのプロパティの一つで、ファイルの作成日時をDateTime型で返します。

このプロパティを利用することで、ファイルがいつ作成されたかを簡単に知ることができます。

  • : DateTime
  • 取得可能な情報: 年、月、日、時、分、秒
  • 注意点: ファイルシステムによっては、作成日時が正確でない場合があります。

特に、ファイルがコピーされた場合や、異なるファイルシステム間で移動された場合には注意が必要です。

CreationTimeプロパティを活用することで、ファイルの管理やログの記録など、さまざまな用途に応用できます。

実践例:ファイルの作成日時を表示するプログラム

ファイルの作成日時を取得する方法を理解したところで、実際にプログラムを作成してみましょう。

ここでは、コンソールアプリケーションとGUIアプリケーションの両方での実装例を紹介し、エラーハンドリングについても触れます。

コンソールアプリケーションでの実装

コンソールアプリケーションは、C#で最も基本的なアプリケーションの形態です。

以下に、ファイルの作成日時を表示するコンソールアプリケーションのサンプルコードを示します。

using System;
using System.IO;
class Program
{
    static void Main()
    {
        Console.WriteLine("ファイルのパスを入力してください:");
        string filePath = Console.ReadLine(); // ユーザーからファイルパスを入力
        try
        {
            FileInfo fileInfo = new FileInfo(filePath);
            DateTime creationTime = fileInfo.CreationTime;
            Console.WriteLine("ファイルの作成日時: " + creationTime.ToString("yyyy/MM/dd HH:mm:ss"));
        }
        catch (Exception ex)
        {
            Console.WriteLine("エラーが発生しました: " + ex.Message);
        }
    }
}
ファイルのパスを入力してください:
C:\example.txt
ファイルの作成日時: 2023/10/01 14:30:00

このプログラムは、ユーザーからファイルパスを入力させ、そのファイルの作成日時を表示します。

エラーが発生した場合には、エラーメッセージを表示します。

GUIアプリケーションでの実装

GUIアプリケーションでは、ユーザーインターフェースを通じて操作を行います。

以下は、Windows Formsを使用した簡単なGUIアプリケーションの例です。

using System;
using System.IO;
using System.Windows.Forms;
public class MainForm : Form
{
    private TextBox textBox;
    private Button button;
    private Label label;
    public MainForm()
    {
        textBox = new TextBox { Location = new System.Drawing.Point(15, 15), Width = 300 };
        button = new Button { Text = "作成日時を表示", Location = new System.Drawing.Point(320, 12) };
        label = new Label { Location = new System.Drawing.Point(15, 50), Width = 400 };
        button.Click += Button_Click;
        Controls.Add(textBox);
        Controls.Add(button);
        Controls.Add(label);
    }
    private void Button_Click(object sender, EventArgs e)
    {
        try
        {
            FileInfo fileInfo = new FileInfo(textBox.Text);
            DateTime creationTime = fileInfo.CreationTime;
            label.Text = "ファイルの作成日時: " + creationTime.ToString("yyyy/MM/dd HH:mm:ss");
        }
        catch (Exception ex)
        {
            label.Text = "エラーが発生しました: " + ex.Message;
        }
    }
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new MainForm());
    }
}

このプログラムは、テキストボックスにファイルパスを入力し、ボタンをクリックすると作成日時を表示します。

エラーが発生した場合には、ラベルにエラーメッセージを表示します。

エラーハンドリングの実装

ファイルの作成日時を取得する際には、さまざまなエラーが発生する可能性があります。

例えば、ファイルが存在しない場合や、アクセス権限がない場合です。

これらのエラーを適切に処理するために、try-catchブロックを使用します。

  • ファイルが存在しない場合: FileNotFoundExceptionがスローされます。
  • アクセス権限がない場合: UnauthorizedAccessExceptionがスローされます。
  • その他のエラー: 一般的なExceptionでキャッチします。

エラーハンドリングを実装することで、プログラムが予期しない終了をすることを防ぎ、ユーザーに適切なフィードバックを提供できます。

応用例:ファイルの作成日時を利用した機能

ファイルの作成日時を取得する技術は、さまざまな応用が可能です。

ここでは、作成日時を利用したいくつかの機能について説明します。

ファイルの作成日時によるソート

ファイルの作成日時を利用して、ファイルをソートすることができます。

これにより、例えば、最新のファイルをすぐに見つけることが可能になります。

以下に、ディレクトリ内のファイルを作成日時でソートするサンプルコードを示します。

using System;
using System.IO;
using System.Linq;
class Program
{
    static void Main()
    {
        string directoryPath = @"."; // ディレクトリのパス(.はカレントディレクトリを指す)
        DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath);
        var files = directoryInfo.GetFiles()
                                 .OrderBy(f => f.CreationTime) // 作成日時でソート
                                 .ToList();
        foreach (var file in files)
        {
            Console.WriteLine($"{file.Name} - {file.CreationTime:yyyy/MM/dd HH:mm:ss}");
        }
    }
}

このプログラムは、指定したディレクトリ内のファイルを作成日時で昇順にソートし、ファイル名と作成日時を表示します。

作成日時を用いたファイルのバックアップ

ファイルの作成日時を利用して、特定の期間内に作成されたファイルをバックアップすることができます。

以下に、過去7日以内に作成されたファイルをバックアップする例を示します。

using System;
using System.IO;
class Program
{
    static void Main()
    {
        string sourceDirectory = @"C:\source_directory"; // 元のディレクトリ
        string backupDirectory = @"C:\backup_directory"; // バックアップ先のディレクトリ
        DirectoryInfo directoryInfo = new DirectoryInfo(sourceDirectory);
        DateTime oneWeekAgo = DateTime.Now.AddDays(-7); // 7日前の日付
        foreach (var file in directoryInfo.GetFiles())
        {
            if (file.CreationTime >= oneWeekAgo)
            {
                string destFilePath = Path.Combine(backupDirectory, file.Name);
                file.CopyTo(destFilePath, true); // ファイルをバックアップ
                Console.WriteLine($"{file.Name} をバックアップしました。");
            }
        }
    }
}

このプログラムは、指定したディレクトリ内のファイルのうち、過去7日以内に作成されたファイルをバックアップ先のディレクトリにコピーします。

作成日時をログに記録する方法

ファイルの作成日時をログに記録することで、ファイルの管理や監査に役立てることができます。

以下に、ファイルの作成日時をログファイルに記録する例を示します。

using System;
using System.IO;
class Program
{
    static void Main()
    {
        string directoryPath = @"C:\example_directory"; // ディレクトリのパス
        string logFilePath = @"C:\log.txt"; // ログファイルのパス
        DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath);
        using (StreamWriter writer = new StreamWriter(logFilePath, true))
        {
            foreach (var file in directoryInfo.GetFiles())
            {
                string logEntry = $"{file.Name} - {file.CreationTime:yyyy/MM/dd HH:mm:ss}";
                writer.WriteLine(logEntry); // ログに記録
                Console.WriteLine($"{file.Name} の作成日時をログに記録しました。");
            }
        }
    }
}

このプログラムは、指定したディレクトリ内のファイルの作成日時をログファイルに追記します。

これにより、ファイルの作成履歴を管理することができます。

よくある質問

ファイルの作成日時が変更されることはあるのか?

ファイルの作成日時は、通常、ファイルが最初に作成された時点のタイムスタンプを示します。

しかし、いくつかの操作によって変更されることがあります。

例えば、ファイルを別の場所にコピーした場合、新しいコピーの作成日時はコピーした時点になります。

また、特定のファイルシステムやバックアップソフトウェアによっては、作成日時が変更されることもあります。

したがって、作成日時を厳密な履歴として使用する場合は注意が必要です。

作成日時以外のファイル情報を取得する方法は?

ファイルの作成日時以外にも、C#ではさまざまなファイル情報を取得することができます。

FileInfoクラスを使用することで、以下のような情報を取得できます。

  • 更新日時: LastWriteTimeプロパティを使用して取得できます。
  • アクセス日時: LastAccessTimeプロパティを使用して取得できます。
  • ファイルサイズ: Lengthプロパティを使用して取得できます。
  • ファイル名: Nameプロパティを使用して取得できます。

例:FileInfo fileInfo = new FileInfo("example.txt"); long fileSize = fileInfo.Length; でファイルサイズを取得できます。

ネットワークドライブ上のファイルでも作成日時を取得できるのか?

ネットワークドライブ上のファイルでも、ローカルファイルと同様に作成日時を取得することが可能です。

ただし、ネットワークの設定やファイルシステムの種類によっては、作成日時が正確でない場合があります。

また、ネットワークの遅延やアクセス権限の制限により、情報の取得に時間がかかることや、アクセスが拒否されることもあります。

ネットワーク環境での使用時には、これらの点に注意して実装することが重要です。

まとめ

この記事では、C#を用いてファイルの作成日時を取得する方法について詳しく解説しました。

FileInfoクラスを活用することで、ファイルの作成日時を取得し、さまざまな応用例に活かすことができることを確認しました。

これを機に、実際のプロジェクトでファイル管理の効率化やデータの整理に役立ててみてはいかがでしょうか。

  • URLをコピーしました!
目次から探す