【问题标题】:How to get "date modified" file properties to be copied line by line onto text file?如何将“修改日期”文件属性逐行复制到文本文件中?
【发布时间】:2014-08-19 14:11:38
【问题描述】:

我正在编写一个代码,该代码从一个文本文件中逐行复制信息并将其粘贴到另一个文本文件中。每行包含“|”并且在该符号之后显示每行修改日期的时间戳。当我运行我的实用程序并将旧文本文件中修改的旧日期替换为新文本文件中的新日期修改属性时,我无法找到一种允许我从构建服务器访问日期修改属性的方法。这是我目前所拥有的:

class Program
{
    class NewTime
    {
        public DateTime Current { get; set; }
    }

    static void Main(string[] args)
    {
        int counter = 0;

        string line;

        // Read the file and display it line by line.
        System.IO.StreamReader file = new System.IO.StreamReader(args[0]);
        System.IO.StreamWriter filewriter = new System.IO.StreamWriter(args[1], false);

        while ((line = file.ReadLine()) != null)
        {
            Thread.Sleep(10);
           string [] pieces = line.Split(new char[] { '|' });
            if(pieces.Length == 2)
            {
                *DateTime outDate;
                if(DateTime.TryParse(pieces[1], out outDate))
                {
                    string outputstring = string.Format(" {0:yyyy-MM-dd-hh-mm-ss-ff-tt}", DateTime.Now);
                    filewriter.WriteLine(pieces[0] + "|" + outputstring);
                }*
                else
                    filewriter.WriteLine(line);
            }

            else
                filewriter.WriteLine(line);

            System.Console.WriteLine(line);
            counter++;
        }
        file.Close();
        filewriter.Close();
        System.Console.ReadLine();
    }
}

星星之间的部分是我的第一次尝试,但这并没有给我想要的东西。它只是用我在计算机上运行该实用程序的当前时间替换了旧时间。

任何帮助表示赞赏 =)

【问题讨论】:

  • 它给了你什么
  • 代码中的日期戳部分提供了我运行代码时计算机上显示的日期和时间。
  • 查看以string outputstring = 为星号的行的末尾,您就会明白为什么。
  • 好吧,我相信“现在”就是给出当前时间的原因。但是我仍然无法找到文件的修改日期并将该信息粘贴到新的文本文件中。

标签: c# properties-file


【解决方案1】:

如果我理解正确,它看起来像一个时间问题:您想用新文本文件中的新日期修改属性替换旧文本文件中修改的旧日期。但是 DateTime.Now 还不够接近,在文件保存到文件系统之前,您无法获取文件系统生成的 DateModified(实际上是 LastWriteTime)。

如果是这样,由于您必须刷新并关闭文件系统才能写入 LastModified 值的新文件,因此即使重新读取新创建的文件 FileInfo 上的 LastAccessTime 也可能无法为您提供所需的值。

这有点混乱,因为 NTFS 更新到文件的最后一次写入访问时间在最后一次访问后可能需要不确定的时间来解决。根据 Windows SDK,即使 FAT 系统的写入时间分辨率约为 2 秒 [http://msdn.microsoft.com/en-us/library/windows/desktop/ms724933(v=vs.85).aspx]

因此,如果用当前时间替换旧时间(如您所做的那样)不够接近,您需要完成初始文件创建循环,然后在文件上派生 FileSystemInfo 对象并调用其 Refresh 方法获取最新值,然后将值(LastWriteTime 或 LastAccessTime)重新写入文件。

有关 FileSystemInfo.LastAccessTime 属性的详细信息,请参阅 .Net Framework 文档:http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.lastaccesstime(v=vs.110).aspx

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 2015-02-19
    • 2014-06-13
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    相关资源
    最近更新 更多