Я тестировал это на окнах xp.Время файловой системы NTFS
Если я
- Создайте файл.
- Пишите к файлу.
- Закройте файл. (Затем LastWriteTime к файлу изменяется)
Но если я
- Создайте файл.
- Установить LastFileTime файла.
- Осмотрите время, вызвав GetFileTime (Затем изменилось значение LastWriteTime файла)
- Сон 20 секунд.
- Пишите к файлу.
- Сон 20 секунд.
- Закрыть файл.
- Осмотрите время, вызывая GetFileTime (время The process5 в никогда не применяется Почему.?)
Edit:
wstring fileName = L"D:\\testfile.txt";
HANDLE h = CreateFileW(fileName.c_str(), GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
0,
CREATE_ALWAYS,
0, 0);
FILETIME ft1, ft2, ft3;
if(!GetFileTime(h, &ft1, &ft2, &ft3))
{
return;
}
std::cout << ft3.dwHighDateTime << std::endl << ft3.dwLowDateTime << std::endl;
ft1.dwLowDateTime = 1000000;
if(!SetFileTime(h, &ft1, &ft1, &ft1))
{
return;
}
if(!GetFileTime(h, &ft1, &ft2, &ft3))
{
return;
}
std::cout << ft3.dwHighDateTime << std::endl << ft3.dwLowDateTime << std::endl;
Sleep(5000);
TCHAR buffer[] = L"Test1234567890 Test1234567890 Test1234567890 Test1234567890 Test1234567890\r\n";
DWORD writeBytes = 0;
BOOL fOk = WriteFile(h, buffer, sizeof(buffer), &writeBytes, 0);
if(!fOk)
{
return;
}
if(writeBytes != sizeof(buffer))
{
return;
}
if(!GetFileTime(h, &ft1, &ft2, &ft3))
{
return;
}
std::cout << ft3.dwHighDateTime << std::endl << ft3.dwLowDateTime << std::endl;
CloseHandle(h);
h = CreateFileW(fileName.c_str(), GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
0,
OPEN_EXISTING,
0, 0);
if(!GetFileTime(h, &ft1, &ft2, &ft3))
{
return;
}
std::cout << ft3.dwHighDateTime << std::endl << ft3.dwLowDateTime << std::endl;
CloseHandle(h);
DeleteFile(fileName.c_str());
Не могли бы вы объяснить мне об этом? Спасибо.
Он был протестирован с использованием собственных WinAPI, а не .NET. Нет кеша. – Benjamin
«Нет кеша». это довольно смелое утверждение для тех, кто не опубликовал код, имеет таинственное поведение, которое он не может объяснить, и использует файловую систему, в которой есть документация по пятнистому поведению: http://msdn.microsoft.com/en-us/library /ms724290%28v=VS.85%29.aspx – msw
Прошу прощения за мой грубый комментарий. Я не это имел в виду. Я не умею хорошо говорить по-английски. Я отредактировал мой вопрос. Спасибо msw. – Benjamin