Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除文件并重新创建文件后,不要在windows中更改创建日期_C#_File - Fatal编程技术网

C# 删除文件并重新创建文件后,不要在windows中更改创建日期

C# 删除文件并重新创建文件后,不要在windows中更改创建日期,c#,file,C#,File,我有申请书。这是一个写日志文件夹 下面是代码 if (File.Exists(@"C:\EXT_LOG\LOG.txt")) { File.Delete(@"C:\EXT_LOG\LOG.txt"); } string Data = "xxxxx"; System.IO.StreamWriter file = new StreamWriter(@"C:\EXT_LOG\LOG.txt"); file.WriteLine(Data); file.Dispose(); file.Close

我有申请书。这是一个写日志文件夹

下面是代码

if (File.Exists(@"C:\EXT_LOG\LOG.txt"))
{
    File.Delete(@"C:\EXT_LOG\LOG.txt");
}

string Data = "xxxxx";
System.IO.StreamWriter file = new StreamWriter(@"C:\EXT_LOG\LOG.txt");
file.WriteLine(Data);
file.Dispose();
file.Close();
我删除文件(如果存在),并创建同名文件。 当我运行程序时,文件的创建日期不会改变

我猜windows的任何管理器或任何文件表仍然包含该文件


所以,当我删除文件时,是否可以删除管理器或文件表内容???

这就是它在windows中的工作方式。我没有在谷歌上搜索“为什么”。但是,您似乎可以使用System.IO.file.SetCreationTime方法通过C#设置文件的创建日期


来源:

我就是这样解决这个问题的:

File.WriteAllBytes(outFile, body);

File.SetCreationTimeUtc(outFile, DateTime.UtcNow);

正如dotnetkid提到的,这是默认的windows行为。这种行为的原因可以在这里找到:保留KB文章。@Grantwiney实际上,您可以在Windows资源管理器中自己测试。1) 查找现有的旧文件。2) 删除它3)使用相同的名称创建一个新文件4)新文件将按照旧文件创建相同的名称(假设您足够快)。请参见下面dotnetkid的答案。我自己也很惊讶:)这样做的原因是为了实现安全保存。就像WORD女士做的那样。当应用程序自动保存时,它们不会重写文件。相反,它们移动旧文件,并创建新文件的副本。但是,新文件需要保留旧文件的属性,包括创建时间。在临时文件前面加上~sign,以使隐藏文件能够看到这种情况。
File.WriteAllBytes(outFile, body);

File.SetCreationTimeUtc(outFile, DateTime.UtcNow);