GetFileInfo() and LastWriteTime() is giving an error : Index was outside the bounds of the array

GetFileInfo() and LastWriteTime() is giving an error : Index was outside the bounds of the array

我有以下代码 spinet:

更新

(code above this code is creation of pdf file)
Dim PdfFileInfo As FileInfo
Dim PdfModificationTime As Date
If (FileIO.FileSystem.FileExists(strPdfFileName)) Then
   PdfFileInfo = FileIO.FileSystem.GetFileInfo(strPdfFileName)
   PdfModificationTime = PdfFileInfo.LastWriteTime()
End If

文件存在,但是当我使用 GetFileInfo()LastWriteTime() 时,它给出 错误:"Index was outside the bounds of the array"

我尝试了很多东西,但运气不好...:(

SOLVED

问题已解决,另行解答!

这里有两个要点..

  1. 我在问题

  2. 中提到的那些行可能出错
  3. 错误:索引超出数组范围

让我们谈谈第一个:


很多人说这些行的错误是不可能的,我一开始写代码时也这么认为,但是在日志中显示了一个错误。

然后我阅读了关于系统函数 GetFileInfo().

的文档

他们说的,这个函数给出了系统内存中有"cashed"的文件的信息,system does this cashing periodically.

现在想一想,系统只是将文件系统信息缓存到内存中,现在你已经创建了一个文件并在文件中写入了一些东西并调用了函数GetFileInfo()

看到问题了吗?看你调用函数时GetFileInfo(),系统内存中连一个文件对象都没有。所以我们在这里得到fileinfo object null,当你试图得到空对象的LastWriteTime()时,这里系统抛出一个异常。

解决方案: 我在代码中 PdfFileInfo 的 fileInfo 对象上使用 while 循环进行了空检查(是的,这个问题已经过测试并解决了...... .:))


现在说第二个:

问题中引用的代码不在 try 块中,因此此函数块抛出的任何异常都在调用函数中收到。这里的调用函数以自己的方式解决了这个异常并抛出了一个与调用函数相关的异常 "Index was outside the bounds of the array" 但没有反映 GetFileInfo().

抛出的实际异常

解决方案: 将此代码块放在 try-catch 块中

感谢所有评论和讨论...:) !