对于“已损坏”的文件,如何引发错误,但在搜索〜$ test.docx 的文件夹中不存在这些错误 我可以以某种方式忽略这些文件吗?
string path ="D:/Users/Bole/TSM/";
foreach (string file in Directory.EnumerateFiles(path,"*.docx"))
{
{
//Open the doc File
var wordApplication = new Microsoft.Office.Interop.Word.Application();
var document = wordApplication.Documents.Open(file);
答案 0 :(得分:2)
如果我能正确理解你,可能就是这么简单:
var fileInfo = new FileInfo(file);
if (!fileInfo.Name.StartsWith("~$"))
{
var wordApplication = new Microsoft.Office.Interop.Word.Application();
var document = wordApplication.Documents.Open(file);
}
此外(正如Panagiotis Kanavos指出的那样),foreach
与MoveNext
一起使用时,你并没有给自己带来任何好处。原因是,每次循环时,枚举器的FindNextFile()
方法都会调用~$...docx
,因此新文件可以出现在结果中。由于每次运行此语句时都会创建一个新的var document = wordApplication.Documents.Open(file);
文件(请参阅Directory.EnumerateFiles()
以获取解释原因的原因):
Directory.EnumerateFiles()
随着循环的继续,你会遇到这些文件。使用this而不是RUN
可以避免这种情况,因为前者只返回一个文件路径数组,当您循环浏览时,它们不会发生变化;即它只是一个静态的文件列表,它是在循环的开头构建的,忽略了在循环发生时创建的文件。