由于特殊需要,对文件的创建日期,修改日期根据文件名日期进行批量随机性(有时间范围段)的修改,一般修改程序比较难以满足这样的需求,于是就有了以下的程序,本来想用JAVA来做,后来发现这部分用JAVA来实现是有点麻烦的,只能用.NET来实现,C#的语法还是和JAVA很相近的。
API很强大,调用代码如下:
System.IO.FileInfo fia = new System.IO.FileInfo("文件路径");
fia.CreationTime = dtF; //修改创建时间
fia.LastWriteTime = dtF; ;//修改最后修改时间
fia.LastAccessTime = dtF; ;//修改最后访问时间
时间随机代码如下:
private void button2_Click(object sender, EventArgs e)
{
int lastInt = 0;//上一次随机数
int randInt = 0;//随机数
String startD = textBox1.Text + ":" + textBox2.Text + ":" + textBox3.Text;
String startE = textBox6.Text + ":" + textBox5.Text + ":" + textBox4.Text;
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.ShowDialog();
String app = fbd.SelectedPath;
string[] fileNames = System.IO.Directory.GetFiles(app);
Random rd = new Random();
foreach (string file in fileNames)
{
System.IO.FileInfo fia = new System.IO.FileInfo(file);
listBox1.Items.Add(file.Replace(app+"\\",""));
String apps = file.Replace(app + "\\", "");
String appDstr = apps.Substring(7, 8);
appDstr = appDstr.Substring(0, 4) + "-" + appDstr.Substring(4, 2) + "-" + appDstr.Substring(6, 2);
label5.Text = appDstr;
DateTime dtS = Convert.ToDateTime(appDstr+" "+startD);
DateTime dtE = Convert.ToDateTime(appDstr + " " + startE);
TimeSpan ts = dtE - dtS;
int roundRandNum = rd.Next(1,10);//避免种子重复性
randInt = rd.Next(roundRandNum, Convert.ToInt32(ts.Ticks / 1000000000));
while (randInt!= lastInt)//避免短时间内产生同样的随机数
{
lastInt = randInt;
long timeTicks = Convert.ToInt64(j) * Convert.ToInt64(1000000000);
DateTime dtF = dtS.AddTicks(timeTicks);
fia.CreationTime = dtF;//修改创建时间
fia.LastWriteTime = dtF; ;//修改最后修改时间
fia.LastAccessTime = dtF; ;//修改最后访问时间
}
}
MessageBox.Show("ALL OK");
}