我们的Windows文件服务器已安装的“存根”,但没有一个确定的时间内访问过的文件的归档服务。 当废止文件的请求被发送到服务器,存档服务取代了存根与原文档,并将其提供给用户。
有关归档服务的主要抱怨是,对于照片的缩略图不再可用。 我决定建立在C#程序,将允许用户选择一个文件夹,并在unstub的所有文件。 它通过读取文件夹中的每个文件的第一个字节:
if (Directory.Exists(path))
{
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] potentiallyStubbedFiles = di.GetFiles();
foreach (FileInfo fi in potentiallyStubbedFiles)
{
//ignore Thumbs.db files
if(!fi.Name.Equals("Thumbs.db"))
{
Console.WriteLine("Reading " + fi.Name);
try
{
FileStream fs = File.Open(fi.FullName, FileMode.Open, FileAccess.Read, FileShare.None);
try
{
//read the first byte of the file, forcing it to be unstubbed
byte[] firstByte = new byte[1];
fs.Read(firstByte, 0, 1);
}
catch (Exception ex)
{
Console.WriteLine("An error occurred trying to read " + fi.Name + ":");
}
fs.Close();
}
catch (Exception ex)
{
Console.WriteLine("An error occurred trying to open " + fi.Name + ":");
}
}
}
Console.WriteLine("Finished reading files.");
}
else
{
Console.WriteLine("\"" + path + "\" is not a valid directory.");
}
它运作良好,但我有一个小问题,我想解决的问题。
在Windows 7中,当FileStream被关闭,Windows资源管理器刷新该文件并显示正确的缩略图,所以你可以看到每个文件的缩略图,因为它们是unstubbed。 在Windows XP中,然而,浏览器不会刷新文件,直到程序退出,迫使用户要等到所有的文件都能够浏览他们之前已经unstubbed。
有没有办法强制Windows XP看完后,立即重新创建该文件的缩略图? 被赋予什么信号刷新文件的程序关闭后? 或者,我会对此完全错误的方式?