前提・実現したいこと
現在ファイルの更新を通知するプログラムを作成しています
10分ごとに該当のフォルダ内のすべてのファイルの名前と更新日時を取得し、listに格納する処理を行い、それを10分前のlistと比較、日次の変更・ファイルの追加・ファイルの消去の3つを検知し、メッセージを出したいと思っています
二つのリストの比較はforeachで行おうと思っているのですが、二つのリストを比較したときに上の3つをそれぞれ検知する条件をどのように設定すればいいでしょうか?
C#
1namespace WindowsFormsApplication6 2{ 3 public partial class Form1 : Form 4 { 5 public Form1() 6 { 7 InitializeComponent(); 8 } 9 10 public class SampleClass 11 { 12 public string filename; 13 public string lasttime; 14 } 15 16 private void button1_Click(object sender, EventArgs e) 17 { 18 List<SampleClass> sampleList = GetFileStateList(); 19 20 WriteXML(sampleList); 21 } 22 23 private void button2_Click(object sender, EventArgs e) 24 { 25 List<SampleClass> sampleList = GetFileStateList(); 26 27 ReadXML(); 28 29 30 } 31 32 private void button3_Click(object sender, EventArgs e) 33 { 34 List<SampleClass> sampleList = GetFileStateList(); 35 36 List<SampleClass> prevSampleList = ReadXML(); 37 38 //ここで比較処理 39 foreach (SampleClass a in prevSampleList) 40 { 41 foreach (SampleClass b in sampleList) 42 { 43 44 45 46 } 47 } 48 } 49 50 51 private List<SampleClass> GetFileStateList() 52 { 53 List<SampleClass> sampleList = new List<SampleClass>(); 54 55 //filesに取得したファイル一覧を格納しlistboxに表示 56 string[] files = Directory.GetFiles(@"C:\Users\TS14-12-077\Desktop\プログラミング大会", "*", SearchOption.AllDirectories); 57 listBox1.Items.AddRange(files); 58 59 foreach (string file in files) 60 { 61 string filetime = Directory.GetLastWriteTime(file).ToString(); 62 63 //ここからシリアライズ処理 64 65 //保存するクラス(SampleClass)のインスタンスを作成 66 SampleClass obj = new SampleClass(); 67 obj.filename = file; 68 obj.lasttime = filetime; 69 70 sampleList.Add(obj); 71 } 72 73 return sampleList; 74 } 75 76 private void WriteXML(List<SampleClass> sampleList) 77 { 78 //保存先のxmlファイル名 79 string fileName = @"C:\Users\TS14-12-077\Desktop\プログラミング大会\sample.xml"; 80 81 //XmlSerializerオブジェクトを作成 82 //オブジェクトの型を指定する 83 System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(List<SampleClass>)); 84 85 86 //書き込むファイルを開く(UTF-8 BOM無し) 87 StreamWriter sw = new StreamWriter(fileName, false, new UTF8Encoding(false)); 88 89 //シリアル化し、XMLファイルに保存する 90 serializer.Serialize(sw, sampleList); 91 92 //ファイルを閉じる 93 sw.Close(); 94 } 95 96 private List<SampleClass> ReadXML() 97 { 98 //保存元のファイル名 99 string fileName = @"C:\Users\TS14-12-077\Desktop\プログラミング大会\sample.xml"; 100 101 //XmlSerializerオブジェクトを作成 102 System.Xml.Serialization.XmlSerializer serializer = 103 new System.Xml.Serialization.XmlSerializer(typeof(List<SampleClass>)); 104 105 106 //読み込むファイルを開く 107 StreamReader sr = new StreamReader( 108 fileName, new UTF8Encoding(false)); 109 110 //XMLファイルから読み込み、逆シリアル化する 111 List<SampleClass> obj = (List<SampleClass>)serializer.Deserialize(sr); 112 113 //ファイルを閉じる 114 sr.Close(); 115 116 return obj; 117 } 118 } 119 120 121} 122 123
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/15 02:59
2019/03/15 06:26
2019/03/15 07:30