我正在使用FileSystemWatcher在目录中查找任何已创建的目录。具体来说,我使用另一个函数来查找创建的文件是否是一个目录,如果它是一个目录,我将文件路径传递给另一个检查目录大小的函数。
即,目录创建>检查它是否是目录>如果是,请检查目录的大小。
目录文件大小功能:
long DirectorySize(DirectoryInfo d)
{
long Size = 0;
// Add file sizes.
FileInfo[] fis = d.GetFiles();
foreach (FileInfo fi in fis)
{
Size += fi.Length;
}
// Add subdirectory sizes.
DirectoryInfo[] dis = d.GetDirectories();
foreach (DirectoryInfo di in dis)
{
Size += DirectorySize(di);
}
return (Size);
}
用于发现文件是否是目录的简单检查:
bool isDirectory(string pathName)
{
// get the file attributes for file or directory
FileAttributes attr = File.GetAttributes(pathName);
//detect whether its a directory or file
if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
return true;
else
return false;
}
然而,这是一个问题。我想在执行检查文件大小功能之前完全写入文件。一次,只有一次,如果要进行检查,文件就完全写好了。
我知道代码存在,例如this,但是它稍微偏离了我想要做的主题,因为我不想打开文件,只找到它的大小。在检查文件大小之前,是否有办法检查文件是否已完全写入?