У меня действительно очень странная проблема! Интересно, проблема в фреймворке, ОС или, может быть, это только у меня, непонимание вещей ...
У меня есть файл, который может быть создан очень давно, я использую этот файл, а затем хочу заархивировать его, изменив его имя. Затем я хочу создать новый файл с тем же именем, что и у старого файла, прежде чем он будет переименован. Достаточно просто!
Проблема, которая действительно озадачивает меня, состоит в том, что вновь созданный файл неправильно создает "timestamp"! Это проблема, поскольку именно эту временную метку я хочу использовать для определения того, когда архивировать и создавать новый файл.
Я создал очень маленький образец, который показывает проблему. Чтобы образец работал, в папке «Файлы» должен быть файл 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();
}