Récupération de la taille de plusieurs fichier

Résolu
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008 - 4 sept. 2007 à 11:18
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 9 sept. 2007 à 00:13
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

cs_rodcobalt22 Messages postés 195 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
6 sept. 2007 à 09:14
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
3
cs_rodcobalt22 Messages postés 195 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
4 sept. 2007 à 12:43
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)
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
4 sept. 2007 à 19:43
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
0
cs_rodcobalt22 Messages postés 195 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
5 sept. 2007 à 09:04
rajoute un .ToString() derrière ton length, je pense que cela fera l'affaire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rodcobalt22 Messages postés 195 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
5 sept. 2007 à 09:21
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 ;)
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
5 sept. 2007 à 13:23
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 ?
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
9 sept. 2007 à 00:13
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
*/
0