Acceuil vb.net(467) Traitements des fichiers sous VB net (suite1)
|
| Traitements des fichiers sous VB net (suite1) |
2011-01-15 |
|
Comment surveiller les modifications d'un fichier grâce aux notifications système ?
-------------------------------------------------------------------------------
Windows envoie des notifications qui permettent de surveiller les modifications apportées au système de fichiers.
Cela se fait de la manière suivante en utilisant la classe System.IO.FileSystemWatcher.
Le code suivant est à placer dans une classe ou un module utilisé dans un projet Console.
Imports System.IO
Sub Watch(ByVal sPath As String, Optional ByVal sFilter As String = "*")
'On peut utiliser les '*' avec sFilter
Dim fw As New FileSystemWatcher(sPath, sFilter)
'On ajoute les handler pour surveiller les évènements qu'on souhaite.
AddHandler fw.Changed, AddressOf OnChanged
AddHandler fw.Renamed, AddressOf OnRenamed
AddHandler fw.Created, AddressOf OnChanged
AddHandler fw.Deleted, AddressOf OnChanged
AddHandler fw.Error, AddressOf OnError
'On surveillera aussi les sous répertoires
fw.IncludeSubdirectories = True
' Mettre cette propriété à True démarre la surveillance des modifications. La mettre à false l'arrête.
Dans notre exemple, elle sera à true durant tout le programme
fw.EnableRaisingEvents = True
End Sub
Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
Console.WriteLine("File {0} {1}", e.FullPath, e.ChangeType)
End Sub
Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)
Console.WriteLine("File {0} renamed to {1}", e.OldFullPath, e.FullPath)
End Sub
Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)
Dim ex As Exception = e.GetException()
Debug.WriteLine(ex.ToString())
Console.WriteLine(ex.Message)
End Sub
Et voici l'utilisation de la fonction Watch
Watch("c:monfichier.txt")
'Ou
Watch("c:*.*")
Comment récupérer le nom d'un fichier, lorsque j'ai le chemin complet ?
----------------------------------------------------------------------------
Vous devez utiliser la méthode GetFileName de la classe System.IO.Path qui vous permet de récupérer le nom du fichier.
Dim fileName As String = "C:toto.tx"
Dim name As String = System.IO.Path.GetFileName(fileName)
Console.WriteLine(name)
Comment afficher ou écrire correctement les caractères accentués dans mes fichiers ?
----------------------------------------------------------------------------
Les fichiers sont ouverts avec l'encodage Unicode par défaut dans .NET.
Il en résulte que les caractères accentués par exemple ne s'affichent pas correctement.
Vous devez spécifier le type d'encodage à utiliser, pour la lecture/écriture de votre fichier. Exemple pour la lecture
Imports System.IO
Imports System.Text
Dim strReader As StreamReader = new System.IO.StreamReader(filePath,Encoding.Default)
Ici, on récupère l'encodage courant et on l'applique lors de l'ouverture du fichier par le StreamReader.
On peut faire exactement la même chose avec les StreamWriter |
| Commentaires des visiteurs : |
|