繁体   English   中英

为什么FileInfo对象的Name属性以“〜$”开头?

[英]Why does the Name Property of FileInfo object start with “~$”?

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

这是我的代码:

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

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

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

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

例:

FileAttributes attributes = File.GetAttributes(path);

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM