Acceuil vb.net(470) Traitements des fichiers sous VB net (suite2)
|
| Traitements des fichiers sous VB net (suite2) |
2011-01-17 |
|
Comment tester l'existence d'un fichier ?
------------------------------------------------------
Tester si un fichier existe :
If System.IO.File.Exists("c:monFichier.txt") Then
' Le fichier existe
Else
' Le fichier n'existe pas
End If
Comment récupérer l'extension d'un fichier ?
--------------------------------------------------------
Pour récupérer l'extension d'un fichier, veuillez procéder de la sorte :
' Path est le chemin complet du fichier
Private Function GetExtension(ByVal path As String) As String
Return New System.IO.FileInfo(path).Extension
End Sub
Comment lire un fichier ligne par ligne ?
------------------------------------------------------
Pour lire un fichier, ligne par ligne, il faut utiliser un StreamReader ainsi qu'une ArrayList. Voici comment procéder :
Imports System.IO
Public Shared Function ReadByLine(ByVal path As String) As ArrayList
'DECLARER un lecteur de fichier
Dim monlecteur As StreamReader
'DECLARER une collection pour les lignes du fichier
Dim meslignes As New ArrayList
Try
'path est le chemin complet du fichier à lire
monlecteur = New StreamReader(path)
With monlecteur
'POSITIONNER le flux au début du fichier
.BaseStream.Seek(0, SeekOrigin.Begin)
'TANT QUE le lecteur a quelquechose à lire
While (.Peek > 0)
'LIRE une ligne du fichier et l'ajouter à meslignes
meslignes.Add(.ReadLine)
End While
End With
Catch ex As Exception
Console.WriteLine(ex.Message)
Finally
'FERMER le lecteur en tout etat de cause
monlecteur.Close()
End Try
Return meslignes
End Function
Comment compresser un fichier avec GZip ?
------------------------------------------------------
Tout d'abord pensez à ajouter ces deux "Imports" sans quoi il n'est pas possible d'utiliser le code donné en exemple.
Imports System.IO
Imports System.IO.Compression
Avec cet exemple il vous suffit juste de passer en paramètres le chemin complet du fichier à compresser, et ensuite le chemin de destination du fichier GZip qui va être créé.
Public Function compresserFichier(ByVal cheminSource As String, ByVal cheminDestination As String) As Boolean
' cheminSource : chemin complet du fichier à compresser
' cheminDestination : chemin complet du fichier compressé à créer
Try
' Le fichier est placé dans le FileStream
Dim monFileStream As New FileStream(cheminSource, FileMode.Open)
Dim monBuffer(monFileStream.Length) As Byte
' Lecture de l'intégralité du FileStream
monFileStream.Read(monBuffer, 0, CInt(monFileStream.Length))
' Fermeture du FileStream
monFileStream.Close()
' Création du fichier qui va contenir le fichier compressé
monFileStream = New FileStream(cheminDestination, FileMode.Create)
' Compression des données
Dim monGZipStream As New GZipStream(monFileStream, CompressionMode.Compress, False)
' Ecriture des données compressées dans le fichier de destination
monGZipStream.Write(monBuffer, 0, monBuffer.Length)
' Fermeture du GZipStream
monGZipStream.Close()
Return True
Catch ex As Exception
MessageBox.Show(ex.Message)
Return False
End Try
End Function
Comment décompresser un fichier GZip ?
-------------------------------------------------------
Tout d'abord pensez à ajouter ces deux "Imports" sans quoi il n'est pas possible d'utiliser le code donné en exemple.
Imports System.IO
Imports System.IO.Compression
Avec cet exemple il vous suffit juste de passer en paramètres le chemin complet du fichier GZip à décompresser, et ensuite le chemin de destination du fichier qui va être décompressé.
Public Function decompression(ByVal cheminSource As String, ByVal cheminDestination As String) As Boolean
' cheminSource : chemin complet du fichier compressé
' cheminDestination : chemin complet du fichier où le fichier doit être décompressé
Try
'Lecture du fichier compresse
Dim monFileStream As New FileStream(cheminSource, FileMode.Open)
' Données du fichier placées dans un GZipStream
Dim monGzipStream As New GZipStream(monFileStream, CompressionMode.Decompress)
' Tableau qui va contenir la taille du fichier
Dim tailleOctets(3) As Byte
' Positionnement dans le Stream pour récupérer la taille
Dim position As Integer = CInt(monFileStream.Length - 4)
monFileStream.Position = position
' Récupération de la taille du fichier
monFileStream.Read(tailleOctets, 0, 4)
' Repositionnement en début du Stream
monFileStream.Position = 0
' Conversion de la taille du fichier en entier
Dim tailleFichier As Integer = BitConverter.ToInt32(tailleOctets, 0)
' Dimesionnement du buffer
Dim buffer(tailleFichier + 100) As Byte
' Offset qui permettra de se repérer dans le Stream
Dim monOffset As Integer = 0
While (True)
' Les données sont décompressées et placées dans le buffer
Dim decompressionOctets As Integer = monGzipStream.Read(buffer, monOffset, 100)
' Tant qu'il reste des données on continue
If (decompressionOctets = 0) Then
Exit While
End If
' On icrémente l'offset pour ne pas repartir de 0 à chaque fois...
monOffset += decompressionOctets
End While
' Création du fichier décompressé
monFileStream = New FileStream(cheminDestination, FileMode.Create)
' Ecriture des données décomrpessées dans le fichier
monFileStream.Write(buffer, 0, tailleFichier - 1)
' Efface les données en mémoire tampon
monFileStream.Flush()
' Fermeture des Streams
monFileStream.Close()
monGzipStream.Close()
Return True
Catch ex As Exception
MessageBox.Show(ex.Message)
Return False
End Try
End Function
|
| Commentaires des visiteurs : |
|