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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[VB.net][C#] Taille d'un fichier


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 95
    Points
    95
    Par défaut [VB.net][C#] Taille d'un fichier
    Salut tout le monde...
    Pour récuperer la taille d'un fihier je fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim MonFichier As New FileInfo("c:\Test.txt")
    Taille = MonFichier.Length
    mais voilà, j'ai pas la valeur souhaitée...
    Exemple:

    Ce que je voudrai Obtenir c'est la valeur souligée en bleu, alors qu'avec cette methode j'obtien la valeur souligée en rouge...

    Un peu d'aide SVP...

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    ok
    une fois que tu connais le nombre de Byte exacts de ton fichier, il te faut maintenant calculer la taillle effective occupée sur le disque, pour cela tu as besoin de savoir comment sont définis sur ce disque:
    1. le nombre de secteurs par cluster
    2. le nombre de bytes par secteur
    Tu peux donc utiliser l'API GetDiskFreeSpace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DllImport("kernel32.dll"SetLastError=True, CharSet=CharSet.Auto)> _
    Shared Function GetDiskFreeSpace( _
        ByVal lpRootPathName As String, _
        ByRef lpSectorsPerCluster As System.UInt32, _
        ByRef lpBytesPerSector As System.UInt32, _
        ByRef lpNumberOfFreeClusters As System.UInt32, _
        ByRef lpTotalNumberOfClusters As System.UInt32) As Boolean
    End Function
    Les paramètres passées par references lpSectorsPerCluster et lpBytesPerSector recevront ces infos
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 95
    Points
    95
    Par défaut
    Ok je vais voir...

  4. #4
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par neguib
    ok
    une fois que tu connais le nombre de Byte exacts de ton fichier, il te faut maintenant calculer la taillle effective occupée sur le disque, pour cela tu as besoin de savoir comment sont définis sur ce disque:
    1. le nombre de secteurs par cluster
    2. le nombre de bytes par secteur
    Tu peux donc utiliser l'API GetDiskFreeSpace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DllImport("kernel32.dll"SetLastError=True, CharSet=CharSet.Auto)> _
    Shared Function GetDiskFreeSpace( _
        ByVal lpRootPathName As String, _
        ByRef lpSectorsPerCluster As System.UInt32, _
        ByRef lpBytesPerSector As System.UInt32, _
        ByRef lpNumberOfFreeClusters As System.UInt32, _
        ByRef lpTotalNumberOfClusters As System.UInt32) As Boolean
    End Function
    Les paramètres passées par references lpSectorsPerCluster et lpBytesPerSector recevront ces infos
    Explication finale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim MonFichier As New FileInfo("c:\Test.txt") 
    Taille = MonFichier.Length
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DllImport("kernel32.dll"SetLastError=True, CharSet=CharSet.Auto)> _
    Shared Function GetDiskFreeSpace( _
        ByVal lpRootPathName As String, _
        ByRef lpSectorsPerCluster As System.UInt32, _
        ByRef lpBytesPerSector As System.UInt32, _
        ByRef lpNumberOfFreeClusters As System.UInt32, _
        ByRef lpTotalNumberOfClusters As System.UInt32) As Boolean
    End Function
    En fait avec ces deux foction nous obtenons
    Le nombre de byte du fichier: Taille
    Le nombre de Byte par secteur: lpBytesPerSector
    Le nombre de secteur par cluster: lpSectorsPerCluster

    Il suffic alos de calculer le nombre de cluster NC occupé par le fichier:

    N=Arrondissement_a_l'entier_superier(taille/lpBytesPerSector )
    NC=Arrondissement_a_l'entier_superier(N/lpSectorsPerCluster )

    Et puis calculer TailleReelle le nombre de Byte que Occupe NC Cluster:
    TailleReelle=NC * lpBytesPerSector * lpSectorsPerCluster


    Merci pour l'aide...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ASP.NET 2.0][C#] Récupérer la taille d'un fichier
    Par toinou62 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 15/02/2008, 15h48
  2. Réponses: 1
    Dernier message: 18/02/2007, 19h33
  3. [Debutant] Comment lire la taille d'un fichier binaire ?
    Par Invité dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 18/12/2003, 19h20
  4. fonction réduisant la taille d'un fichier
    Par Harry_polin dans le forum C
    Réponses: 22
    Dernier message: 27/11/2003, 13h56
  5. [VB6] [Réseau] Récupérer la taille d'un fichier avec inet
    Par pcpunch dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 20/02/2003, 21h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo