ファイル操作

C# でファイルの「コピー, 削除, 名前変更, 移動, 存在確認」などを行います。

前田稔(Maeda Minoru)の超初心者のプログラム入門

ファイルのコピー

  1. C# には、ファイルをコピーする専用のメソッドが用意されています。
    コピー元のファイルとして "c:\tmp\data.txt" と c:\tmp\msg.txt" を格納しておいて下さい。
    最初に "c:\tmp\data.txt" を "c:\tmp\work.txt" にコピーします。
    IN_file1(@"c:\tmp\data.txt") ⇒ OT_file(@"c:\tmp\work.txt")
    もう一度同じプログラムを実行すると、既に "c:\tmp\work.txt" が存在しているのでエラーが表示されます。
    別に意味は無いのですが、既にファイルが存在するときは "c:\tmp\msg.txt" を "c:\tmp\work.txt" に上書きコピーしてみました。
    IN_file2(@"c:\tmp\msg.txt") ⇒ OT_file(@"c:\tmp\work.txt")
    上書きするときは、第3引数に true を指定して下さい。
  2. ソースコードです。
    /*********************************/
    /*★ ファイルの操作    前田 稔 ★*/
    /*********************************/
    using System;
    using System.IO;
    
    class FileClass
    {
        static string   IN_file1 = @"c:\tmp\data.txt";
        static string   IN_file2 = @"c:\tmp\msg.txt";
        static string   OT_file  = @"c:\tmp\work.txt";
    
        public static int Main()
        {
            if (!File.Exists(OT_file))              //ファイルの有無をチェック
                File.Copy(IN_file1,OT_file);        //data.txt⇒work.txt
            else
                File.Copy(IN_file2,OT_file,true);   //上書きコピー
            return 0;
        }
    }
    
  3. ファイルの更新日付を調べて、新しい日付のときコピーします。
    前回の「ファイルのコピー」を実行した状態では、work.txt は今日の日付になっています。
    この状態で実行してもファイルはコピーされないので確認して下さい。
    次に、更新日付を 1995,1,17 に設定するコードを追加してコピーされることを確認して下さい。
  4. ソースコードです。
    /*********************************/
    /*★ ファイルの操作    前田 稔 ★*/
    /*********************************/
    using System;
    using System.IO;
    
    class FileClass
    {
        static string   IN_file1 = @"c:\tmp\data.txt";
        static string   OT_file  = @"c:\tmp\work.txt";
    
        public static int Main()
        {
    //        DateTime ctWrite = new DateTime(1995,1,17);
    //        File.SetLastWriteTime(OT_file, ctWrite);
    
            if (File.Exists(OT_file))               //ファイルの有無をチェック
            {   DateTime IN_update = System.IO.File.GetLastWriteTime(IN_file1);
                DateTime OT_update = System.IO.File.GetLastWriteTime(OT_file);
                if (IN_update>OT_update)
                {   File.Copy(IN_file1,OT_file,true);   //上書きコピー
                }
            }
            return 0;
        }
    }
    

ファイルの削除と名前の変更

  1. @"c:\tmp\work.txt" を削除します。
        string OT_file = @"c:\tmp\work.txt";
        System.IO.File.Delete(OT_file);
        
  2. @"c:\tmp\work.txt" の名前を @"c:\tmp\wk.txt" に変更します。
        string Before_file = @"c:\tmp\work.txt";
        string After_file = @"c:\tmp\wk.txt";
        System.IO.File.Move(Before_file,After_file);
        
  3. @"c:\tmp\work.txt" を @"c:\test\wk.txt" に移動します。
    名前の変更と同じ File.Move() を使います。
    移動元と移動先は、同じドライブで無ければなりません。
        string RN_file = @"c:\tmp\wk.txt";
        string MV_file = @"c:\test\wk.txt";
        System.IO.File.Move(RN_file,MV_file);
        
  4. 読み取り専用の属性が設定されているファイルは、書き換えることが出来ません。
    属性を解除するソースコードです。
    using System;
    using System.IO;
    
    class FileClass
    {
        static string OT_file = @"c:\tmp\work.txt";
    
        // ファイル属性を取得
        FileAttributes fas = File.GetAttributes(OT_file);
        // ファイル属性から読み取り専用を削除
        fas = fas & ~FileAttributes.ReadOnly;
        // ファイル属性を設定
        File.SetAttributes(OT_file, fas);
            ・・・
    

存在確認

  1. ファイルの存在を確認します。
        string      XML_File = @"C:\tmp\memo.xml";
    
        if (File.Exists(XML_File))
        {
            MessageBox.Show("C:\\tmp\\memo.xml ファイルが見つかりました");
        }
    
  2. フォルダーのときは、次のように書きます。
        if (!System.IO.Directory.Exists("C:\\tmp"))
        {
            MessageBox.Show("C:\\tmp\\ のフォルダーを作成して下さい");
        }
    

超初心者のプログラム入門(C# Frame Work)