Directory.GetFiles保留最后的访问时间
看来C#中的Directory.GetFiles()修改了文件的上次访问日期。
我用谷歌搜索了几个小时,似乎无法找到解决这个问题的方法。反正是否保留文件的所有MAC(已修改,已访问,已创建)属性?
我正在使用Directory.GetDirectories(),Directory.GetFiles()和FileInfo。
此外,fi.LastAccessTime给出了奇怪的结果 - 日期是正确的,但是,时间是2分钟或几个小时。
Time of function execution: 10/31/2008 8:35 AM
Program Shows As Last Access Time
0_PDFIndex.html - 10/31/2008 8:17:24 AM
AdvancedArithmetic.pdf - 10/31/2008 8:31:05 AM
AdvancedControlStructures.pdf - 10/30/2008 1:18:00 PM
AoAIX.pdf - 10/30/2008 1:18:00 PM
AoATOC.pdf - 10/30/2008 12:29:51 PM
AoATOC2.pdf - 10/30/2008 1:18:00 PM
Actual Last Access Time
0_PDFIndex.html - 10/31/2008 8:17 AM
AdvancedArithmetic.pdf - 10/30/2008 12:29 PM
AdvancedControlStructures.pdf - 10/30/2008 12:29 PM
AoAIX.pdf - 10/30/2008 12:29 PM
AoATOC.pdf - 10/30/2008 12:29 PM
AoATOC2.pdf - 10/30/2008 12:29 PM
以下是我正在使用的方法。如果您需要更多信息,请告诉我。
谢谢!
public void PopulateTreeView(string directoryValue, ref TreeNode parentNode)
{
string[] directoryArray = Directory.GetDirectories(directoryValue);
string[] fileArray = Directory.GetFiles(directoryValue, "*.*", SearchOption.AllDirectories);
try
{
#region Directories
if (directoryArray.Length != 0)
{
foreach (string directory in directoryArray)
{
DirectoryInfo di = new DirectoryInfo(directory);
TreeNode dirNode = parentNode.Nodes.Add(di.Name);
FileNode fn = new FileNode();
fn.bIsDir = true;
fn.dir = di;
dirNode.Tag = fn;
PopulateTreeView(directory, ref dirNode);
Application.DoEvents();
}
}
#endregion
#region Files
if (fileArray.Length != 0)
{
foreach (string file in fileArray)
{
FileInfo fi = new FileInfo(file);
TreeNode fileNode = parentNode.Nodes.Add(fi.Name);
FileNode fn = new FileNode();
fn.bIsDir = false;
fn.file = fi;
fileNode.Tag = fn;
fileNode.ImageIndex = 1;
Console.WriteLine(fi.Name + " - " + fi.LastAccessTime);
}
}
#endregion
}
catch (UnauthorizedAccessException)
{
parentNode.Nodes.Add("Access denied");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
Application.DoEvents();
}
}
我知道属性之间的差异。我需要的是文件保持完全相同的所有属性和元数据,就像我的程序从未触及过文件一样;这包括上次访问日期。
没有找到相关结果
已邀请:
8 个回复
戊袱
一旦完成,你可能会将它设置为0。您可以使用C#中的Process.Start调用它,但必须有更好的编程方式(调用Windows API)。
请注意,这是一个全局Windows设置,也会影响应用程序外部的磁盘访问...
秃拳割
悸翠疮武昏
田眯衅
涸兑
厢界山攀
曝匿弄罚
焙恍挝厂熄
将揭示大量潜在的解决方案。