Récupération de la taille de plusieurs fichier [Résolu]

Signaler
Messages postés
83
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
8 juillet 2008
-
cs_coq
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour à tous, alors voila, j'ai un listBox avec comme headerNom et Taille et je voudrais justement récupéré la taille des fichier que je choisi avec mon openFileDialog car j'ai trouvé un bout de code qui permet de récupérer la taille d'un fichier dans un Label mais pas dans l'header Taille. Et j'aimerai par la suite pouvoir lire les Tap mp3 toujours avec des Header ( Artiste, Chanson, etc...). Et encore deux questions , comment récupère ton le nom du fichier séléctionner dans l'openFileDialog ( sans le chemin complet ) ? Et comment peut on communiquer entre deux Form ?

En vous remerciant d'avance.

Voici mon code au cas ou :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Repertoire
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ColumnHeader header1, header2;
            header1 = new ColumnHeader();
            header2 = new ColumnHeader();

            header1.Text = "Nom";
            header1.Width = 570;
            header2.Text = "Taille";
            header2.Width = 80;

            listView1.Columns.Add(header1);
            listView1.Columns.Add(header2);
        }

        private void listView1_DoubleClick(object sender, EventArgs e)
        {
            Form Form2 = new Form2();
            Form2.ShowDialog();
        }

        private void ouvrirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                // On récupère, dans un tableau, la liste des fichiers sélectionnés
                string[] files = openFileDialog1.FileNames;

                // On les ajoute au listview
                foreach (string file in files)
                {
                    ListViewItem ItemFile = new ListViewItem(file);
                    ItemFile.SubItems.Add(Size.ToString());
                    listView1.Items.Add(ItemFile);
                }
            }
            FileStream sizeFile = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
            fileSizeFromLabel.Text = "File Size ( " + (sizeFile.Length / 1024) + " Ko)";
            sizeFile.Close();
        }

    }
}

7 réponses

Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016

tu sais le prend pas mal mais parfois il faut réflêchir un peu.

Je te montre comment obtenir la taille de ton fichier en octet.
Ensuite, c'est qu'un simple division en fonction du nombre de chiffre. L'objet FileInfo ne peut pas être convertie en taille de fichier, mais sa propriété Length (qui te retourne la taille du fichier) peut subir cette convertion.

Je te montre l'exemple mais il serait bien que tu réflêchisse un peu plus la prochaine fois.

FileInfo ofile =

new FileInfo(@"c:\temp\toto.xml");

string strTampon = ofile.Length.ToString();

float fltTailleAffichable = 0;

// convertion en Kilo Octet

if( strTampon.Length > 3)
{

// Ko
      fltTailleAffichable = ofile.Length / 1024;
}
Voilà, maintenant à toi d'appronfondir si tu veux effectué des convertions précises
Content de t'avoir Aider

RodCobalt22, vous salue bien ;-)
!! N'oubliez pas le TAG résolue ^^ par respect pour les autres lecteurs
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016

Je pense que l'objet FileInfo pourrais répondre à pas mal de tes questions.
il contient pas mal de propriété et méthode qui te permettrons de récupérer le nom du fichier avec ou sans extension, sa taille, son chemin ...

Par contre, pour les TAG MP3, c'est un peu plus compliquer que ça il me semble.
Fais une recherche mais je crois que tu dois lire ces informations directement dans le flux du fichier MP3 (Je peux me tromper)
Messages postés
83
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
8 juillet 2008

Merci de tes info, alors pour le moment j'essaye de récupérer la taille d'un fichier dans un textBox1 avec FileInfo

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = openFileDialog.FileName;
                FileInfo file = new FileInfo(openFileDialog.FileName);
                textBox2.Text = (file.Length);
           }
J'ai donc le code ci-dessus, mais il me dit impossible de convertir implicitement le type "long" en "string", j'ai par la suite essayé de faire un Convert mais rien à faire...et aussi si j'arrive à faire cela comment récupérer la taille du fichier en Mo ou Ko selon le fichier choisi ?

Merci d'avance
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016

rajoute un .ToString() derrière ton length, je pense que cela fera l'affaire.
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016

Oups pa lu jusqu'au bout (Dslé les admin). pour récupérer la taille en Mo il suffit de faire la conversion toi même mais fait attention à prendre la vrai valeur du kilo octet.
Pour le faire en fonction de la taille du fichier, un fois la taille convertie en string compte le nombre de caractère (".Length" sur la chaine) et détermine quelle échelle de valeur sera intéressante.
Je n'en dis pas plus ;)
Messages postés
83
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
8 juillet 2008

Merci pour ton aide, sa marche impec ^^. Donc mataintenant quand tu dis qu'il faut faire la conversion, c'est ma variable file que je convertit ?
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
76
Salut,

Au lieu de passer par une conversion en chaine de caractères pour tester la longueur, il voudrait mieux faire la détermination d'unité directement sur la valeur.

Si >= 1099511627776, utiliser unité To
Sinon si >= 1073741824, utiliser unité Go
Sinon si >= 1048576, utiliser unité Mo
Sinon si >= 1024, utiliser unité Ko

/*
coq
MVP Visual C#
CoqBlog
*/