Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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-сайт: cargomaster.at.ua/
 Профиль | | #2
Добавлено: 01.12.11 14:56
---Fix--- пишет:
Однако я заметил, что даты различаются, только когда копируешь файл на флешку или с неё, а копирование между жесткими дисками не вызывает изменений даты

Между двумя хардами или разделами на одном?

Ответить

Номер ответа: 3
Автор ответа:
 ---Fix---



ICQ: 348680795 

Вопросов: 12
Ответов: 33
 Профиль | | #3 Добавлено: 01.12.11 16:34
Между двумя физическими, разными хардами

Ответить

Номер ответа: 4
Автор ответа:
 ---Fix---



ICQ: 348680795 

Вопросов: 12
Ответов: 33
 Профиль | | #4 Добавлено: 01.12.11 16:45
Вот код копирования выделенных в листбоксе фалов в другой каталог.
  1.  
  2.     Public Sub CopyToStorage()
  3.         Dim NewFileName As String
  4.         For Each ComputerFile As clsSkyFile In lstComputer.SelectedItems
  5.             Try
  6.                 NewFileName = Options.StorageDirectory & "\" & ComputerFile.FileInfo.Name
  7.                 ComputerFile.FileInfo.CopyTo(NewFileName, ReplaceNewer)
  8.                 IO.File.SetLastWriteTime(NewFileName, ComputerFile.FileInfo.LastWriteTime)
  9.             Catch ex As Exception
  10.                 If ex.Message.EndsWith("already exists.") Then
  11.                 Else
  12.                     Throw ex
  13.                 End If
  14.             End Try
  15.  
  16.         Next
  17.         RefreshView()
  18.     End Sub


Похоже на то что время изменения скопированного файла будет тем больше, чем больше файлов будет копироваться, и последний будет имет наибольший разрыв в датах. Но почему?

Ответить

Номер ответа: 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
Немного подумав я просто скопировал тотал командером этот файл на флешку и сравнил даты - различаются :). Так что решить этот вопрос наверное нельзя программно.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам