IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ ASP.NET/VB.NET

logo
Sommaire > Coté serveur > Manipulations des fichiers
        J'ai besoin de connaître le répertoire physique de mon application asp.NET. Comment faire?
        Comment uploader un fichier sur le serveur via une page asp.net ?
        Comment afficher tous les fichier d'un répertoire du serveur ?
        Comment créer, copier, déplacer, supprimer un fichier ?
        Comment lire et écrire dans un fichier texte ?
        Comment obtenir la liste des fichiers et des sous-répertoires d'un répertoire ?
        Comment lister les répertoires d'une application?
        Comment lister les fichiers d'un répertoire?
        Comment connaître la taille totale du contenu d'un répertoire?
        Comment lire un fichier ligne par ligne?
        Comment récupérer le content-type d'un fichier?
        Comment connaître la taille d'un fichier?
        Comment permettre d'utiliser des fichiers de manière relative ?



J'ai besoin de connaître le répertoire physique de mon application asp.NET. Comment faire?
auteur : Didier Danse
Pour lister les fichiers d'un répertoire ou pour accéder à une base de données Access, il nous est parfois nécessaire de savoir l'adresse exacte du répertoire physique dans lequel se trouve l'application. Cela est possible à l'aide de:

					Dim PhysicalPath As String = Server.MapPath("nomfichier.mdb")
				
Cet exemple initialisera PhysicalPath avec l'adresse physique du fichier nomfichier.mdb.


Comment uploader un fichier sur le serveur via une page asp.net ?
auteur : johngt
Dans cet exemple nous alons voir comment uploader un fichier sur le serveur via une page ASP.NET.

Tout d'abord on place un contrôle input file sur la page aspx :

					<INPUT id="tboxMonFichier" type="file" size="75" name="tboxMonFichier" runat="server">
				

Qui est déclkaré dans le code behind :


					Protected WithEvents tboxMonFichier As System.Web.UI.HtmlControls.HtmlInputFile
				

Puis dans le code behind :

					If  Not tboxMonFichier.PostedFile.FileName.Length = 0 Then
					Dim monchemin as string = "C:\repfilesupload"
					tboxMonFichier.PostedFile.SaveAs(monchemin & _
					tboxMonFichier.PostedFile.FileName.Substring( _
					tboxMonFichier.PostedFile.FileName.LastIndexOf("\") + 1))
					End If
				


Attention : Veillez à mettre les droits nécéssaires sur le répertoire d'upload ;-)

lien : fr Pourquoi l'upload de fichiers de plus de 4Mo lève une exception ?

Comment afficher tous les fichier d'un répertoire du serveur ?
auteur : David Pedehourcq
Nous allons afficher tous les fichiers d'un répertoire dans une ListBox :

					Dim dir As New DirectoryInfo("C:\MonChemin")

					MalLsttBox.DataSource = dir.GetFiles("*.*")
					MalLsttBox.DataBind()
				
Note : attention à bien paramètrer vos droits de manière à ce que le user ASPNET puisse parcourir le répertoire ;)


Comment créer, copier, déplacer, supprimer un fichier ?
auteur : abelman
Pour créer, copier, déplacer ou supprimer un fichier, on utilise la classe System.IO.File

					Imports System
					Imports System.IO

					Public Shared Sub FileTests()
					Try
					'Création d un fichier vide
					Dim fs As FileStream = File.Create("myfile.txt")
					fs.Close
					Console.WriteLine("fichier myfile.txt créé")

					'Copie de fichier
					File.Copy("myfile.txt", "copyofmyfile.txt")
					Console.WriteLine("fichier myfile.txt copié vers copyofmyfile.txt")

					'Déplacement de fichier
					File.Move("copyofmyfile.txt", "c:\copyofmyfile.txt")
					Console.WriteLine("fichier copyofmyfile.txt déplacé vers c:\copyofmyfile.txt")

					'Suppression de fichier
					File.Delete("c:\copyofmyfile.txt")
					Console.WriteLine("Fichier c:\copyofmyfile.txt supprimé")
					Catch e As Exception
					Debug.WriteLine(ex.ToString)
					Console.WriteLine(ex.Message)
					End Try
					End Sub
				
lien : fr System.IO.File

Comment lire et écrire dans un fichier texte ?
auteur : abelman
Nous allons ouvrir un fichier texte et le remplir s'il n'existe pas encore. Nous afficherons ensuite son contenu à l'écran. On utiliser pour cela les classes System.IO.StreamReader pour la lecture et System.IO.StreamWriter pour l'écriture

					Imports System
					Imports System.IO

					Sub FichierTexte(ByVal nomFichier As String)
					Dim sr As StreamReader = Nothing
					Dim sw As StreamWriter = Nothing
					Dim line As String
					Try
					If Not File.Exists(nomFichier) Then
					' Le fichier n'existe pas. On le crée.
					sw = New StreamWriter(nomFichier)
					sw.WriteLine("Bonjour. Nous sommes le {0} et il est {1} ", DateTime.Now.ToLongDateString, DateTime.Now.ToLongTimeString)
					sw.Close
					sw = Nothing
					' Remarque : On peut utiliser sw = File.AppendText(NomFichier) pour ajouter
					' du texte à un fichier existant
					End If
					' Ouverture du fichier et écriture du contenu du fichier sur la console
					sr = New StreamReader(nomFichier)
					Console.WriteLine("Début du fichier")
					line = sr.ReadLine
					While Not (line Is Nothing)
					Console.WriteLine(line)
					line = sr.ReadLine
					End While
					Console.WriteLine("Fin du fichier")
					Finally
					' Fermeture streamreader
					If Not (sr Is Nothing) Then
					sr.Close
					End If
					' Fermeture streamwriter
					If Not (sw Is Nothing) Then
					sw.Close
					End If
					End Try
					End Sub

				
lien : fr System.IO.StreamWriter
lien : fr System.IO.StreamReader

Comment obtenir la liste des fichiers et des sous-répertoires d'un répertoire ?
auteur : abelman
On utilise la fonction GetFileSystemEntries de la classe System.IO.Directory

					Imports System.IO
					Imports System
					Shared Sub Dir(ByVal directory As String)
					Dim files As String()
					files = Directory.GetFileSystemEntries(directory)
					Dim filecount As Integer = files.GetUpperBound(0) + 1
					Dim i As Integer = 0
					While i < filecount
					Response.Write(files[i])
					System.Math.Min(System.Threading.Interlocked.Increment(i),i-1)
					End While
					End Sub

				
Pour avoir juste les noms des fichiers et pas les sous-répertoires d'un répertoire, on utilise

					System.IO.Directory.GetFiles()
				
lien : fr System.IO.Directory

Comment lister les répertoires d'une application?
auteur : Didier Danse
Il nous est souvent nécessaire de lister les répertoires présents dans le répertoire d'une application asp.NET. Pour cela, il suffit de boucler sur la liste des DirectoryInfo renvoyés par l'intermédiaire de la méthode GetDirectories de cette même classe DirectoryInfo.

Attention que la base de l'application doit être récupérée par l'intermédiaire de

					Server.MapPath(".")
				
ce qui donne ...

					Dim di As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(Server.MapPath("."))
					For Each di2 As System.IO.DirectoryInfo In di.GetDirectories
					Response.Write(di2.FullName)
					' Traitement quelconque
					Next
				
Bien entendu vous pouvez (voire devez) gérer les exceptions du type "Répertoire inexistant" ou encore "Accès interdit".

lien : faq Comment lister les fichiers d'un répertoire?

Comment lister les fichiers d'un répertoire?
auteur : Didier Danse
Comme pour le listage des répertoires, une simple boucle suffit. DirectoryInfo fournit une méthode GetFiles qui se chargent de renvoyer la liste des fichiers du répertoires.

Il ne reste plus dès lors qu'à effectuer un traitement sur chacun des fichiers de cette liste.

					Dim di As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(Server.MapPath("."))
					For Each fi As System.IO.FileInfo In di.GetFiles
					Response.Write(fi.FullName)
					Next
				
Bien entendu vous pouvez (voire devez) gérer les exceptions du type "Répertoire inexistant" ou encore "Accès interdit".

lien : faq Comment lister les répertoires d'une application?

Comment connaître la taille totale du contenu d'un répertoire?
auteur : Didier Danse
Pour connaître la taille du contenu, il suffit d'additionner la taille de chacun des fichiers de ce répertoire.

Voici une petite fonction permet d'effectuer cette opération.

					Public Function DirectoryLength(ByVal relativePath As String) As Integer
					Dim bytes As Integer = 0
					Dim di As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(Server.MapPath(relativePath))
					For Each fi As System.IO.FileInfo In di.GetFiles
					bytes += fi.Length
					Next
					Return bytes
					End Function
				
Bien entendu vous pouvez (voire devez) gérer les exceptions du type "Répertoire inexistant" ou encore "Accès interdit".


Comment lire un fichier ligne par ligne?
auteur : Xavier Talour
Certes XML et les bases de données prennent de plus en plus de place dans le monde de l'informatique mais les fichiers dits "classiques" sont toujours bel et bien présents.

Voici comme lire un fichier et, ce, ligne par ligne.

Tout d'abord il faut utiliser le namespace System.IO.

					Imports System.IO
				
Pour lire tout le fichier, il suffit de boucler sur toutes les lignes du fichier.

					Public Sub ReadByLine(ByVal path As String)
					Dim sr As StreamReader
					Try
					sr = New StreamReader(path)
					Dim contenu As String
					While Not ((contenu = sr.ReadLine) Is Nothing)
					' Utiliser ce contenu
					' Par exemple ajout d'une ListBox, ...
					End While
					Catch generatedExceptionVariable0 As Exception
					' Gestion de l'exception (FileNotFound, ...
					' (redirection, ...)
					Finally
					sr.Close
					End Try
					End Sub
				

Comment récupérer le content-type d'un fichier?
auteur : Didier Danse
Les content-types se trouvent dans la base de registres. Il "suffit" de parcourir les associations extension / content-type pour retrouver celle qui correspond à l'extension de notre fichier.

Voici une fonction permettant d'effectuer cette recherche.

					Public Shared Function GetMIMEType(ByVal filepath As String) As String
					Dim regPerm As RegistryPermission = New RegistryPermission(RegistryPermissionAccess.Read, "\HKEY_CLASSES_ROOT")
					Dim classesRoot As RegistryKey = Registry.ClassesRoot
					Dim fi As FileInfo = New FileInfo(filepath)
					Dim dotExt As String = fi.Extension.ToLower
					Dim typeKey As RegistryKey = classesRoot.OpenSubKey("MIME\Database\Content Type")
					Dim Keyname As String = ""
					For Each keyname As String In typeKey.GetSubKeyNames
					Dim curKey As RegistryKey = classesRoot.OpenSubKey("MIME\Database\Content Type\" + keyname)
					If CType(curKey.GetValue("Extension"), String) = dotExt Then
					Keyname = keyname
					End If
					Next
					Return Keyname
					End Function
				
Sans oublier d'importer les namespaces suivants:

					Imports System.IO
					Imports System.Security.Permissions
					Imports Microsoft.Win32
				

Comment connaître la taille d'un fichier?
auteur : Didier Danse
Il suffit d'utiliser

					Dim BytesSize As Integer = FileInfo("nomfichier.ext").Length
				

Comment permettre d'utiliser des fichiers de manière relative ?
auteur : Didier Danse
Lorsque vous ouvrez un fichier texte, par exemple, il vous faut savoir l'adresse physique de ce fichier. Malheureusement, nous ne connaissons que le chemin relatif bien souvent.
Server.MapPath est là pour nous aider. En lui passant le chemin relatif, Server.MapPath renverra le chemin physique complet.
Cela donne, dans l'exemple de l'ouverture d'un flux sur le fichier texte :

					 
Fs.Open(Server.MapPath("./adresserelative/fichier.txt"))

				


Consultez les autres F.A.Q's


Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.