本程序是不断判断当前文件夹中某指定文件的修改日期,如果修改日期更改或者变化
则会将文件拷贝到目标文件夹,示例代码只提供一个思路及想法。
本文主要引用头文件
using System.IO;
using System.Configuration;
主要代码
本程序功能是将 某个文件如果修改时间有所变化,也就是说被修改过,则会从其路径地址,拷贝到其他路径地址的程序。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Threading;
using System.Xml.Linq;
using System.Configuration;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
internal class CopyFile
{
private Thread threadUpdate;
public string localAddName;
public string targetAddName;
Configuration cfa;
string FileName1 = "xxx工艺参数.accdb";
string FileName2 = "xxxx工艺参数.accdb";
string FileName3 = "xxxxx数据库备份.mdb";
public CopyFile()
{
}
public void initializer(string localAddress, string targetAddress)
{
//将传入得地址,作为全局变量
localAddName = localAddress;
targetAddName = targetAddress;
//此处读取AppConfig文件的句柄
cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//开启更新线程
threadUpdate = new Thread(updata);
threadUpdate.IsBackground = true;
threadUpdate.Start();
}
/// <summary>
/// 拷贝文件函数
/// </summary>
/// <param name="localAddress"></param>
/// <param name="targetAddress"></param>
public void CpoyFileFunc(string localAddress, string targetAddress)
{
try
{
File.Copy(localAddress, targetAddress, true); // 第三个参数表示如果目标文件已存在,则覆盖它
}
catch (Exception ex)
{
//Console.WriteLine($"Error: {ex.Message}");
}
}
/// <summary>
/// 更新文件线程
/// </summary>
public void updata()
{
while (true)
{
try
{
// 获取文件的最后修改时间
DateTime lastWriteTime1 = File.GetLastWriteTime(localAddName + @"\" + FileName1);
DateTime lastWriteTime2 = File.GetLastWriteTime(localAddName + @"\" + FileName2);
DateTime lastWriteTime3 = File.GetLastWriteTime(localAddName + @"\" + FileName3);
//判断当前文件修改时间是否和存在AppConfig里面的时间是否不同,如果不同则更新
if(lastWriteTime1.ToString() != ConfigurationManager.AppSettings["time1"])
{
CpoyFileFunc(localAddName+@"\" + FileName1, targetAddName+@"\"+ FileName1);
cfa.AppSettings.Settings["time1"].Value = lastWriteTime1.ToString();
}
if (lastWriteTime2.ToString() != ConfigurationManager.AppSettings["time2"])
{
CpoyFileFunc(localAddName + @"\" + FileName2, targetAddName + @"\" + FileName2);
cfa.AppSettings.Settings["time2"].Value = lastWriteTime2.ToString();
}
if (lastWriteTime3.ToString() != ConfigurationManager.AppSettings["time3"])
{
CpoyFileFunc(localAddName + @"\" + FileName3, targetAddName + @"\" + FileName3);
cfa.AppSettings.Settings["time3"].Value = lastWriteTime3.ToString();
}
//保存AppConfig内容
cfa.Save(ConfigurationSaveMode.Modified);
Thread.Sleep(12000);
}
catch (Exception)
{
}
}
}
/// <summary>
/// 中止线程函数
/// </summary>
public void StopThread()
{
threadUpdate.Interrupt();
threadUpdate.Abort();
}
}
}
AppConfig内容
此处为了记录程序中文件的上一次的修改时间,用以判断是否需要更新文件。
<appSettings>
<add key="time1" value="ldx"></add>
<add key="time2" value="ldx"></add>
<add key="time3" value="ldx"></add>
</appSettings>