kaz*_*aze 24 .net c# windows filesystems
我确实有一个非常奇怪的问题!我想知道问题是在框架中,操作系统还是仅仅是我,误解了一些事情......
我有一个文件,可能是很久以前创建的,我使用该文件,然后我想通过更改它的名称来存档它.然后我想在重命名之前创建一个与旧文件同名的新文件.够容易!
真正困扰我的问题是,新创建的文件出错了"创建" - 时间戳!这是一个问题,因为它是我想用来确定何时存档和创建新文件的时间戳.
我创建了一个非常小的样本来显示问题.要使示例正常工作,Files文件夹中必须有一个文件1.txt.此外,还必须及时设置文件属性(使用其中一个工具,我使用Nomad.NET).
static void Main(string[] args)
{
// Create a directory, if doesnt exist.
string path = Path.GetDirectoryName(Application.ExecutablePath) + "\\Files";
Directory.CreateDirectory(path);
// Create/attach to the 1.txt file
string filename = path + "\\1.txt";
StreamWriter sw = File.AppendText(filename);
sw.WriteLine("testing");
sw.Flush();
sw.Close();
// Rename it...
File.Move(filename, path + "\\2.txt");
// Create a new 1.txt
sw = File.AppendText(filename);
FileInfo fi = new FileInfo(filename);
// Observe, the old files creation date!!
Console.WriteLine(String.Format("Date: {0}", fi.CreationTime.Date));
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
Joe*_*Joe 28
这是一个神秘的"功能"回到过去的Windows的结果.核心细节如下:
基本上,这是故意的.但它是可配置的,并且在今天的大多数软件中都是不合时宜的.
我想你可以先创建一个新的文件名,然后重命名old-> old.1,然后new-> old,它就会"工作".我不记得我们在几年前遇到这种情况时所做的事情.
小智 9
我最近碰到了问题中描述的同样问题.在我们的例子中,如果我们的日志文件超过一周,我们会删除它并开始一个新文件.但是,它保持了自2008年以来创建的相同日期.
这里的一个答案描述了重命名旧文件然后创建一个新文件,希望获得正确的创建日期.然而,这对我们来说是不成功的,它保持旧的约会.
我们使用的是File.SetCreationTime方法,顾名思义,它可以让我们轻松控制文件的创建日期,允许我们将其设置为DateTime.Now.其余的逻辑后来工作正常.