コード例 #1
0
        /// <summary>
        /// Cada vez que se hace "doble click" sobre un elemento se calcula el tamaño del directorio
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lstLista_ItemActivate(object sender, EventArgs e)
        {
            // Definición de variables
            ListView lista = (ListView)sender;

            //nFiles += dirLista[lstLista.Items.IndexOfKey("Xtras (archivos)")].Archivos;
            DirInfo dirInfo = (listaDirHistoria[indexHistory])[lista.SelectedItems[0].Index];

            //DirInfo dirInfo = dirLista[lista.SelectedItems[0].Index];

            // Llamar a la rutina para calcular los datos del directorio
            CalcularDirectorio(dirInfo.Ruta);

            // Finalizar
            return;
        }
コード例 #2
0
ファイル: frmMain.cs プロジェクト: arthurits/DirectoryInfo
        /// <summary>
        /// Cada vez que se hace "doble click" sobre un elemento se calcula el tamaño del directorio
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lstLista_ItemActivate(object sender, EventArgs e)
        {
            // Definición de variables
            ListView lista     = (ListView)sender;
            String   strNombre = lista.SelectedItems[0].SubItems[0].Text;
            Int32    nSelection;
            Int32    nBusqueda = -1;

            // Si se ha hecho doble click sobre los archivos del directorio
            if (strNombre == strArchivosSueltos)
            {
                return;
            }

            nSelection = Convert.ToInt32(lista.SelectedItems[0].Name);     // devuelve el índice del elemento seleccionado
            DirInfo dirInfo = (listaDirHistoria[indexActual])[nSelection]; // devuelve el objeto DirInfo del elemento seleccionado

            // Comprobar si el elemento seleccionado ya está calculado
            nBusqueda = lbxHistory.Items.IndexOf(dirInfo.Ruta); // Devuelve -1 cuando no se encuentra nada

            if (nBusqueda > -1)
            {
                lbxHistory.SelectedIndex = nBusqueda;
            }
            else
            {
                // Llamar a la rutina para calcular los datos del directorio
                //CalcularDirectorio(dirInfo.Ruta);

                // Iniciar un hilo para calcular el tamaño del directorio

                // Pasar las variables iniciales al hilo
                hilo.SetDirRuta(dirInfo.Ruta);

                // Iniciar el hilo
                thread = new Thread(new ThreadStart(hilo.HiloProc));
                thread.Start();

                // Cambiar el texto de la barra de estado de la aplicación
                HiloOcultarUI();
                this.statuslblInfo.Text = String.Concat("Calculando tamaño de '", dirInfo.Ruta, "' (presione ESC para cancelar)...");
            }

            // Finalizar
            return;
        }
コード例 #3
0
        /// <summary>
        /// Itera a través del directorio especificado para obtener información
        /// del tamaño que ocupa
        /// </summary>
        /// <param name="dir">Directorio que se quiere analizar</param>
        private List <DirInfo> ExplorarDirectorio(DirectoryInfo dir)
        {
            // Definición de variables
            DirectoryInfo[] directories;

            DirInfo        dirData  = new DirInfo();
            List <DirInfo> dirLista = new List <DirInfo>();

            long lTamañoTotal = 0;
            int  nCarpetas    = 0;
            int  nArchivos    = 0;

            // Iterar para cada uno de los subdirectorios
            directories = dir.GetDirectories();
            foreach (DirectoryInfo d in directories)
            {
                // Si se trata de un directorio real
                if ((d.Attributes & FileAttributes.Directory) != 0)
                {
                    // Recuperar la información de los subdirectorios
                    nCarpetas        = 0;
                    nArchivos        = 0;
                    dirData.Nombre   = d.Name;
                    dirData.Ruta     = d.FullName;
                    dirData.bytes    = DirSize(d, ref nCarpetas, ref nArchivos);
                    dirData.kilo     = SizeConversion(dirData.bytes, ConversionOptions.BytesToKilo);
                    dirData.mega     = SizeConversion(dirData.bytes, ConversionOptions.BytesToMega);
                    dirData.giga     = SizeConversion(dirData.bytes, ConversionOptions.BytesToGiga);
                    dirData.Carpetas = nCarpetas;
                    dirData.Archivos = nArchivos;

                    // Añadir a la lista
                    dirLista.Add(dirData);

                    // Calcular el tamaño total del directorio
                    lTamañoTotal += dirData.bytes;
                }
            }

            // Obtener la información para los archivos del directorio seleccionado
            nCarpetas        = 0;
            nArchivos        = 0;
            dirData.Nombre   = strArchivosSueltos;  // Constante definida como miembro de la clase
            dirData.Ruta     = String.Format("{0}\\{1}", dir.FullName, strArchivosSueltos);
            dirData.bytes    = FileSize(dir, ref nArchivos);
            dirData.kilo     = SizeConversion(dirData.bytes, ConversionOptions.BytesToKilo);
            dirData.mega     = SizeConversion(dirData.bytes, ConversionOptions.BytesToMega);
            dirData.giga     = SizeConversion(dirData.bytes, ConversionOptions.BytesToGiga);
            dirData.Carpetas = nCarpetas;
            dirData.Archivos = nArchivos;

            dirLista.Add(dirData);

            lTamañoTotal += dirData.bytes;

            // Ahora se puede calcular el porcentaje que ocupa cada directorio
            for (int i = 0; i < dirLista.Count; i++)
            {
                dirData = dirLista[i];
                if (dirData.bytes == 0)
                {
                    dirData.porcentaje = 0;
                }
                else
                {
                    dirData.porcentaje = 100f * dirData.bytes / ((Double)lTamañoTotal);
                }
                dirLista[i] = dirData;
            }

            // Devolver el resultado
            return(dirLista);
        }