所以我正在编写一些代码,这些代码通过.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
很重要,因为我用它来查询最新文件以获取信息并显示它。但是,特定.xlsx文件的Name
属性(可能更多)显示为~$File.xlsx
,而实际上文件名实际上是File.xlsx
。这会导致FullName
属性也包含这些字符。
有什么方法可以解决这个问题吗?是什么引发了这个?
答案 0 :(得分: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
答案 1 :(得分:1)
~$
表示该文件是Microsoft Office使用的临时文件。有关其他信息,请参阅here。