Jump to content

Listar (tamanho) Ficheiros em Listbox


Recommended Posts

Um bem Aja a todos

Necessito fazer a listagem em listbox de ficheiros da reciclagem em que me apareça o tamanho.

Tenho este código em que consigo listar os ficheiros mas não sei como fazer para obter o Size dos mesmos.

Agradeço uma ajuda.

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

        Const Megas As Integer = 1048576
        Dim TotalMegas As Double


        Dim s As String() = {}

        Dim File As System.IO.FileInfo
        Dim tmp As String = "C:\$Recycle.Bin\S-1-5-21-2615594602-2052165265-2723691852-1000\"
        Dim soma As Integer = 0

       
        Try
            ' I run the program.
            '  Process.Start("C:\$Recycle.Bin\S-1-5-21-2615594602-2052165265-2723691852-1000\")

            s = System.IO.Directory.GetFiles(tmp)

            For i As Integer = 0 To s.Length - 1

                s(i) = s(i).Replace(tmp, "")
                ListBox1.Items.Add(New String(s(i)))
            Next



            For i As Integer = 0 To s.Length - 1
                File = New System.IO.FileInfo(tmp & s(i))
                soma += File.Length
            Next
  TotalMegas = FormatNumber(soma / Megas, 2)

         
            Label1.Text = "O Tamanho da Reciclagem é:  " & vbCrLf & TotalMegas & " MB e " & "possui " & s.Length - 1 & " Ficheiros."



            ' Label1.Text = "O Tamanho da Reciclagem é:  " & vbCrLf & TotalMegas & " MB"

        Catch ex As Exception
            ' I show an error message if the sub generates an error.
            MessageBox.Show("Error message: " & ex.Message)
        End Try

 

Edited by Chamuanza
Link to post
Share on other sites

Olá Chamuanza,

O Size já tu tens na soma que estás a fazer. O membro Length do FileInfo é o tamanho do ficheiro, em bytes.

Podes obter o tamanho em qualquer outra grandeza, simplesmente por dividir sucessivamente por 1024, por exemplo, para KB:

Dim fi As New FileInfo("o caminho para o ficheiro")
Console.WriteLine(String.Format("{0} ({1} kb)", fi.Name, Math.Round(fi.Length / 1024, 3)))

Que sai algo como:

04_ERRO_1500x_00001.png (25.562 kb)

 

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to post
Share on other sites

Olá ribeiro55

Agradeço desde já a ajuda, mas gostava de explicitar melhor a minha ideia

Tenho uma aplicação para uso pessoal (para já) de correr a pasta da reciclagem e saber para além dos megas também o numero de ficheiros existentes.

Sucede que na reciclagem estão 8 itens mas na contagem aparecem 38 e repetidos. Sei que os restantes são ficheiros de 1K penso que necessários para restaurar os mesmos quando é pedido.

O que pretendo era colocar todos os ficheiros na listbox com a coluna de tamanho a fim de poder selecionar todos os que são diferentes de 1K, e assim ter o número de itens certos iguais ao que aparece na pasta do explorer do Windows10.

Se calhar há uma maneira melhor e mais prática de obter o que pretendo?

PS - Juntei o resto do código que faltava

Obrigado pela atenção

 

Edited by Chamuanza
Dar o Topico com RESOLVIDO
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.