На нашем файловом сервере Windows установлена служба архивирования, в которой файлы «заглушки» не были доступны в течение определенного периода времени. Когда запрос на зашитый файл отправляется на сервер, служба архива заменяет заглушку исходным документом и обслуживает ее для пользователя.Как обновить миниатюру файла в проводнике Windows?
Основная жалоба на услугу архива заключалась в том, что миниатюры для фотографий больше не доступны. Я решил создать программу на C#, которая позволит пользователю выбрать папку и разбить все файлы в ней. Он делает это, прочитав первый байт каждого файла в папке:
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 Explorer обновляет файл и показывает правильную миниатюру, поэтому вы можете видеть миниатюру каждого файла по мере его ненакраски. Однако в Windows XP Explorer не обновляет файлы до выхода программы, заставляя пользователя ждать до . Все файлы были нераскрыты, прежде чем они смогут их просматривать.
Есть ли способ заставить Windows XP воссоздать миниатюру для файла сразу после его чтения? Какой сигнал подан для обновления файлов после закрытия программы? Или я об этом совершенно неправильно?
Этот вопрос меня интересует. Я добавил щедрость. – Stephen
С тех пор мне не повезло. Тем не менее, я замечаю, что если я заставляю поток спать в течение нескольких секунд, все файлы, которые были обработаны, будут обновлены. – Torai
Ну, если вы решите это, ответьте на этот вопрос в ответ на эту должность в течение недели, и я дам вам щедрость: p. – Stephen