Страница: 1 |
Страница: 1 |
Вопрос: При копировании файла разные даты его изменения
Добавлено: 01.12.11 08:50
Автор вопроса: ---Fix--- | ICQ: 348680795
У меня есть функция, определяющая разницу во времени, между скопированными файлами и возвращающая эту разницу в строковом выражении.
[SOURCE]
Public Function GetDifference(ByRef pCompareFile As IO.FileInfo) As String
Dim ts As TimeSpan
Dim ResStr As String = ""
Dim Pri As String = ""
Dim pFirstDate As Date = FileInfo.LastWriteTime 'FileInfo = IO.FileInfo
Dim pSecondDate As Date = CompareFile.LastWriteTime 'CompareFile = IO.FileInfo
If FileInfo.Name <> CompareFile.Name Then
IsNewer = True 'IsNewer = Файл новее, или одинаков
Return " - Нет такого же"
End If
If pFirstDate > pSecondDate Then
ts = pFirstDate.Subtract(pSecondDate)
Pri = "Новее на "
IsNewer = True
ElseIf pSecondDate > pFirstDate Then
ts = pSecondDate.Subtract(pFirstDate)
Pri = "Старее на "
Else
ResStr = "Не изменен"
IsNewer = True
Return ResStr
End If
ResStr = " " & ts.Seconds & " сек." & ResStr
If ts.TotalSeconds > 60 Then
ResStr = " " & ts.Minutes & " мин." & ResStr
If ts.TotalMinutes > 60 Then
ResStr = " " & ts.Hours & " ч." & ResStr
If ts.TotalHours > 24 Then
ResStr = " " & ts.Days & " дн." & ResStr
End If
End If
End If
Return Pri & ResStr
End Function
[/SOURCE]
методом [SOURCE]FileInfo.CopyTo[/SOURCE] копирую файл, и и теперь я сравниваю даты изменения файлов.
Они почему-то отличаются. Причем разница во времени примерно равная времени копирования файла. Из-за чего так? Как это можно исправить?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
---Fix---
ICQ: 348680795
Вопросов: 12
Ответов: 33
Профиль | | #1
Добавлено: 01.12.11 13:25
Пробовал даже вручную установить дату скопированному файлу, но нифига 0_о. Эти даты различаются, когда как, на 1 сек. или несколько милисекунд.
Однако я заметил, что даты различаются, только когда копируешь файл на флешку или с неё, а копирование между жесткими дисками не вызывает изменений даты.
Номер ответа: 2
Автор ответа:
Дмитрий Юпатов
Вопросов: 4
Ответов: 457
Web-сайт:
Профиль | | #2
Добавлено: 01.12.11 14:56
Однако я заметил, что даты различаются, только когда копируешь файл на флешку или с неё, а копирование между жесткими дисками не вызывает изменений даты
Между двумя хардами или разделами на одном?
Номер ответа: 3
Автор ответа:
---Fix---
ICQ: 348680795
Вопросов: 12
Ответов: 33
Профиль | | #3
Добавлено: 01.12.11 16:34
Между двумя физическими, разными хардами
Номер ответа: 4
Автор ответа:
---Fix---
ICQ: 348680795
Вопросов: 12
Ответов: 33
Профиль | | #4
Добавлено: 01.12.11 16:45
Вот код копирования выделенных в листбоксе фалов в другой каталог.
Похоже на то что время изменения скопированного файла будет тем больше, чем больше файлов будет копироваться, и последний будет имет наибольший разрыв в датах. Но почему?
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 01.12.11 21:23
потому что ты не учитываешь время на выполнение самой операции копирования...
флешка тормозная.. скорость записи/чтения (так называемые дисковые операции) низкие, отсюда и разница во времени..
копируешь 1 файл - маленькая разница.. копируешь 100 файлов - разница большая.. У хардов скорость чтения/записи намного выше поэтому разница не так заметна
Номер ответа: 6
Автор ответа:
---Fix---
ICQ: 348680795
Вопросов: 12
Ответов: 33
Профиль | | #6
Добавлено: 02.12.11 10:18
ну если бы время изменения было текущей датой, я бы еще понял. А у меня получается: сегодня 2.12.2011, я копирую файл с датой например: 23.11.2011 17:45 43сек. а скопированный получается с датой изменения 23.11.2011 17:45 44сек. Нигде не могу найти, почему так получается. Причем я явно в коде указываю дату изменения уже скопированному файлу равной файлу источнику, хотя и без этого указания эта дата все равно будет тем больше, чем больше файлов копироваться.
Номер ответа: 7
Автор ответа:
---Fix---
ICQ: 348680795
Вопросов: 12
Ответов: 33
Профиль | | #7
Добавлено: 30.12.11 09:27
Немного подумав я просто скопировал тотал командером этот файл на флешку и сравнил даты - различаются . Так что решить этот вопрос наверное нельзя программно.