使用C#中的filelist输出获取文件时间戳和管道

时间:2013-05-15 09:19:47

标签: c# getfiles streamwriter.write

我的要求是阅读文件位置检索.jpg&列表。 .xml文件及其时间戳并将其写入文件。

我是C#的新手,到目前为止我已经能够获取文件列表并将输出写入文件,但我不知道如何获取文件的时间戳并将其与列表一起写入。

我已添加代码现有代码,我需要为列表中的每个文件添加时间戳,以便我可以使用这些详细信息进行下游比较。

请告知。

代码

using System;
   using System.Collections;
   using System.Collections.Generic;
   using System.IO;
   using System.Linq;
   using System.Text;

   class Program
   {



    static void Main()
    {

        TextWriter tw = new StreamWriter(@"C:\test\logfile_c#.txt");

        // Put all xml file names in directory into array.
        string[] array1 = Directory.GetFiles(@"C:\test","*.xml");

        // Put all jpg files in directory into array.
        string[] array2 = Directory.GetFiles(@"C:\test", "*.jpg");


        // Display all XML files and write to text file.
        Console.WriteLine("--- XML Files: ---");
        foreach (string name in array1)
        {
            Console.WriteLine(name);
            tw.WriteLine(name);
            Console.ReadLine();
        }

        // Display all JPG files and write to text file..
        Console.WriteLine("--- JPG Files: ---");
        foreach (string name in array2)
        {
            Console.WriteLine(name);
            tw.WriteLine(name);
            Console.ReadLine();
        }

        tw.Close();
    }
    }

输出

C:\测试\ chq.xml C:\测试\ img_1.jpg C:\测试\ img_2.jpg

3 个答案:

答案 0 :(得分:2)

取决于您追求的时间戳。您可以使用以下方式获取创建时间:

new FileInfo(filename).CreationTime;

那会给你一个DateTime。所以你可以这样做:

tw.WriteLine(new FileInfo(name).CreationTime.ToString());

.ToString()是可选的 - 您可以使用它来控制输出中使用的日期/时间格式。如果您需要,还可以使用修改后的时间属性。

答案 1 :(得分:0)

正如你所说,你刚刚开始学习我已经把这个稍微修改过的代码放在一起,向你展示你可以简化一些事情 - 我也删除了对Console的阅读和写作。

using System.IO;

namespace Test
{
    class Program 
    {
        static void Main(string[] args)
        {
            // try to name your variables in a meaningful way.
            string[] xmlFiles = Directory.GetFiles(@"C:\test", "*.xml");
            string[] jpgFiles = Directory.GetFiles(@"C:\test", "*.jpg");

            // File.CreateText creates a new file and returns a stream writer.
            // wrap it in a using statement so you don't have to worry about closing it yourself
            using (var writer = File.CreateText(@"C:\test\logfile_c#.txt"))
            {
                FileInfo fi;
                foreach (string name in xmlFiles)
                {
                    // FileInfo instances will give you access to properties
                    // of the file, including the creation date and time.
                    fi = new FileInfo(name);
                    // Use an overload of WriteLine using a format string.
                    writer.WriteLine("file name: {0}, creation time: {1}", name, fi.CreationTime);
                }
                foreach (string name in jpgFiles)
                {
                    fi = new FileInfo(name);
                    writer.WriteLine("file name: {0}, creation time: {1}", name, fi.CreationTime);
                }
            }
        }
    }
}

答案 2 :(得分:0)

您可以尝试编写如下代码:

//Select directory
DirectoryInfo dirInfo = new DirectoryInfo("D:\\test");

//Get .xml files
FileInfo[] xmlFiles = dirInfo.GetFiles("*.xml");
//Get .jpg files
FileInfo[] jpgFiles = dirInfo.GetFiles("*.jpg");

//Merge files together for convenience
List<FileInfo> allFiles = new List<FileInfo>();
allFiles.InsertRange(allFiles.Count, xmlFiles);
allFiles.InsertRange(allFiles.Count, jpgFiles);

//Loop through all files and write their name and creation time to text file
using (StreamWriter writer = new StreamWriter("D:\\test\\test.txt"))
{
    foreach (FileInfo currentFile in allFiles)
    {
        //Format string in desired format
        string info = string.Format("Name: {0}  Creation time: {1}", currentFile.Name, currentFile.CreationTime);

        writer.WriteLine(info);
    }
}