C#如何获取文件放入文件夹的日期?

问题描述:

假设,在星期天file.txt文件被创建,保存在文件夹folder1C#如何获取文件放入文件夹的日期?

周一,有人将file.txt复制或移动到文件夹folder2

周二,对于文件Folder2/file.txt,我想要得到的日期在文件来到folder2(即日期星期一)

UPDATE: FileInfo.LastAccessTime道具,从文件夹中移动文件时,不会受到影响另一个,但只有当复制粘贴文件。

可以使用FileSystemInfo.LastAccessTime物业

参考MSDN链接https://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.lastaccesstime(v=vs.110).aspx

+0

它只适用于复制粘贴文件,不适用于移动文件。 – Refael

+0

您是否尝试过'LastWriteTime'属性? – Thiru

+0

是的,它没有更新。 – Refael

您可以使用File.SetCreationTime设置复制时间。

File.Move(sourceFile, destinationFile); 
File.SetCreationTime(destinationFile, DateTime.Now); 

更新:

由于问题被更新知道(只)日当文件被手动复制,我们只需要知道该文件是CreatedLastAccessed。你可以做到这一点。

var f = new FileInfo("destinationfile"); 
DateTime lastAccess = f.LastAccessTime 
string datoftheweek = lastAccess.ToString("ddd"); 
+0

也许我没有正确解释自己,我再次编辑了这个问题。 我不会将文件自己转发到folder2,有人移动。我只需要得到转移日期。 – Refael

+0

仍然使用此代码,您可以确定何时(日/日)复制发生的地方,对吧? –

+0

文件是通过手工传递,而不是通过机器传递。 我的代码只在文件已经在文件夹folder2中运行 – Refael

Action  CreationTime  LastWriteTime  LastAccessTime   FullName 
     2016/2/17 23:32:09 2016/2/17 23:43:06 2016/2/17 23:43:06   D:\Temp\tmp 
CopyTo 2016/3/16 17:57:00 2016/2/17 23:43:06 2016/3/16 17:57:00 D:\Temp\Test\tmp1 
MoveTo 2016/2/17 23:32:09 2016/2/17 23:43:06 2016/2/17 23:43:06 D:\Temp\Test\tmp2 

我用FileInfo对文件进行测试。 CopyTo将更改CreationTimeLastAccessTime,但MoveTo不会更改三个属性中的任何一个。

当文件被复制到目标文件夹时,我们可以使用CreationTime来检测复制的时间。 我不知道检测文件被移动的时间,有时可能会使用文件夹的LastAccessTime

如果可能,请使用FileSystemWatcher来监视特殊目录中的更改,然后保存更改文件的时间。