【问题标题】:C# copying creation time of file in cdC#复制cd中文件的创建时间
【发布时间】:2015-11-17 08:59:41
【问题描述】:

我正在尝试从 cd 复制文件,然后复制它以复制文件的创建日期。 复制命令如下所示:

Microsoft.VisualBasic.FileIO.FileSystem.CopyFile(sourcePath, destPath);

它可以正常工作并将文件从 cd(源)复制到桌面(目标)。

下一步我要做的是从源文件中获取创建时间:

DateTime creationTime = File.GetCreationTime(sourcePath);

这一步也可以正常工作,创建时间在creationTime变量中。

最后一步是将创建时间放到目标文件中:

File.SetCreationTime(destPath, creationTime);

这就是问题所在,最后一步抛出“访问被拒绝:“C:....”(目标路径)”。

奇怪的是我可以访问 cd(源)中的文件,但为什么我不能更改目标中文件的创建时间? 其次,当我尝试从密钥上的磁盘复制到桌面或从计算机中的一个文件夹复制到另一个文件夹时,它非常完美。 这让我认为问题是当我试图从 cd 复制时,我在另一张 cd 上检查了是否发生了相同的结果,它无法复制创建日期。 如何解决并复制创建时间?

【问题讨论】:

  • 将系统时钟更改为 CD 中的创建日期,然后复制文件。呵呵;)
  • 我只是在开玩笑.. 但我想帮忙。您是否有足够的权限来编辑桌面上的文件?
  • 不使用 CopyFile 复制文件,而是使用 File.OpenRead() 从 CD 打开文件,使用 File.Create() 创建目标文件,然后使用 Stream 复制源文件的字节。复制到()。完成后,您可以对目标文件执行我认为的任何操作。
  • 为什么要使用 Visual Basic 复制文件?
  • 是的,我有权编辑其位于桌面的文件,如果我从其他来源(不是 cd)复制到桌面@NickGames 中的同一文件夹,则创建副本可以正常工作

标签: c# copy cd


【解决方案1】:

我不知道您为什么会收到 File.SetCreationTime 的“拒绝访问”。如果您右键单击并以管理员身份运行 Visual Studio,会发生什么?这也将提升您的程序,并可能证明它的访问权限。

无论如何,更改创建/修改日期的另一种方法是使用FileInfo

private void ChangeCreationTime(string filePath, DateTime creationDate)
{
    var result = new FileInfo(filePath) {CreationTime = creationDate};
}

您也可以使用{LastWriteTime = dateTime} 更改修改日期。见下文:

很遗憾,我这里没有 CD 可以直接测试,所以如果您再次遇到问题,我们深表歉意。

【讨论】:

  • 感谢帮助,我试过了,发现问题不在创建更改,是文件属性的问题,你可以看到我的回答
  • 感谢您告诉我。现在我们都会因为不看这么基本的东西而感到愚蠢;-)
【解决方案2】:

已解决: 对于下一个会有同样问题的人,问题是cd上的文件是只读文件,复制文件后它仍然是只读文件。 为了设置它的创建日期,您必须从复制的新文件中删除只读属性,然后才能设置创建日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2011-04-27
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2016-02-22
    • 2013-06-08
    相关资源
    最近更新 更多