1

所以我正在编写一些代码,这些代码正在遍历.xlsx文件目录并选择最后创建的文件。这是一项简单的任务,但是Name特定FileInfo对象的属性发生了一些奇怪的事情,并且可能会发生更多这种情况。

这是我的代码:

        DirectoryInfo di = new DirectoryInfo(FolderPath);
        FileInfo[] FileArray = di.GetFiles("*.xlsx", SearchOption.AllDirectories);
        if (FileArray.Count() != 0) 
        {
            DateTime latestDate = DateTime.MinValue;
            string FileName = String.Empty;
            foreach (FileInfo File in FileArray)
            {
                if (File.CreationTime > latestDate)
                {
                    latestDate = File.CreationTime;
                    FileName = File.FullName;  
                }
            }
        }

FileName很重要,因为我使用它来查询最新文件的信息并显示它。但是,Name特定 .xlsx 文件(可能更多)的属性看起来像这样~$File.xlsx,而实际上文件名实际上是 .xlsx 文件File.xlsx。这会导致FullName属性也包含这些字符。

有没有什么办法解决这一问题?是什么触发了这个?

4

2 回答 2

4

打开 xlsx 文件会导致 Excel 创建一个以“~$”开头的同名隐藏文件。因此,如果在您检索目录内容时打开了这些 Excel 文件之一,您还将获得临时文件。

添加一个排除隐藏文件的过滤器,您的问题就解决了。

例子:

FileAttributes attributes = File.GetAttributes(path);

if((attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
{
    // Hidden file, just skip it
}

来自http://msdn.microsoft.com/en-us/library/system.io.file.getattributes.aspx

于 2013-04-25T14:15:03.423 回答
1

~$表示该文件是 Microsoft Office 使用的临时文件。有关其他信息,请参见此处

于 2013-04-25T14:15:14.383 回答