2010-09-08 36 views
14

J'ai un certain nombre de fichiers dans un dossier, et j'ai besoin de la dernière date de modification. Alors jeObtenir la date de modification du fichier dans VB.NET

FDate = IO.File.GetLastWriteTime(FName) 

Il fonctionne très bien avec certains fichiers, mais sur d'autres, je reçois une date de 1/1/1601. Mais quand je vérifie les fichiers dans Windows Explorer, toutes les dates semblent normales (récentes). Donc, je devine qu'il y a plusieurs dates de fichiers stockées dans le système de fichiers, et ceux que .NET voit ne sont pas ceux que Windows voit. Comment puis-je obtenir exactement la date qui apparaît comme "date de modification" dans une fenêtre d'explorateur de fichiers?

J'ai essayé quelques choses de l'API Visual Basic 6.0, mais cela ne semble pas fonctionner dans .NET.

Répondre

27

De File.GetLastWriteTime Method:

Si le fichier décrit dans le paramètre de chemin n'existe pas, cette méthode retourne 12:00 minuit, le 1er Janvier, 1601 AD (CE) temps universel coordonné (UTC), ajustée à heure locale.

Le fichier que vous interrogez est probablement manquant.

+3

Je ne peux pas le croire, vous avez raison, ce n'est pas !! Mais c'était plus tôt !! Quelque chose d'autre se passe. C'est drôle comment quand vous êtes coincé dans un problème, vous pouvez parfois manquer l'évidence. À votre santé – Ianb

4

La requête mentionnée ci-dessous obtiendra le bon LastModifiedDate pour tous les fichiers contenus dans un dossier.

Dim strFilepath = "" 'Specify path details 
    Dim directory As New System.IO.DirectoryInfo(strFilepath) 
    Dim File As System.IO.FileInfo() = directory.GetFiles() 
    Dim File1 As System.IO.FileInfo 
    For Each File1 In File 
     Dim strLastModified As String 
     strLastModified = System.IO.File.GetLastWriteTime(strFilepath & "\" & File1.Name).ToShortDateString() 
    Next