Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

BrunoT

[Resolvido] Problema a contar ficheiros de uma directoria

Recommended Posts

BrunoT

Boas Pessoal !

Depois de uma pesquisa aqui no forum, encontrei um topico com um código para contar ficheiros presentes numa determinada pasta ... tou a usar esse mesmo codigo mas o resultado da-me sempre 0 ... alguém tem um tempinho para ver o que está mal aqui ?!

Imports System.IO
Module funcao
    Public Sub funcaowallpaper()
        Dim i As Integer = 0
        Dim Leitura As String = Application.StartupPath & "\config.txt"
        Dim lines() As String = IO.File.ReadAllLines(Leitura)
        Dim total As Integer
        Dim caminho As String
        caminho = lines(3)
        total = IO.Directory.GetFiles(caminho, "*.jpg").Length
        MsgBox(caminho)
        MsgBox(total)
    End Sub
End Module

Já fiz total.ToString e alterei o Length por Count mas o resultado foi sempre o mesmo.

Cumprimentos

PS: Resolvi criar um novo tópico e não continuar o outro porque pelo que eu percebi, aqui no forum preferem assim ... mas se quiserem que continue no noutro tópico é só avisar :P

Share this post


Link to post
Share on other sites
jpaulino

Qual é o resultado de caminho = lines(3) ?

PS: Resolvi criar um novo tópico e não continuar o outro porque pelo que eu percebi, aqui no forum preferem assim ... mas se quiserem que continue no noutro tópico é só avisar :)

E fizestes bem :P

Share this post


Link to post
Share on other sites
BrunoT

Agradeço-te desde já a resposta rápida jpaulino :)

o resultado é algo como c:\os meus documentos\as minhas imagens

Devo ter metido água em algum lado :P

Share this post


Link to post
Share on other sites
Joca
'"código para contar ficheiros presentes numa determinada pasta"

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'Se bem percebi, pretendes um código que te possibilite contares
        'as imagens com extensão "*.jpg", em quatro locais diferentes ("lines(3)",
        'ou seja, quatro linhas com localizações diferentes).
        'Caso contrário (se for só uma localização), nem era preciso a matriz.
        'Como estava, pareceu-me confuso, por isso, fiz o seguinte:
        '(NOTA: devido ao cansaço, não sei se, o que fiz, é o mais correcto.
        'E, como o costume, o código que fiz pode, sempre, ser reduzido ou readaptado...
        'E, não encontrei o link em que está o código original que falaste acima...)

        'No ficheiro config.txt coloquei:
        'C:\teste com imagens1
        'C:\teste com imagens2
        'C:\teste com imagens3
        'C:\teste com imagens4

        'Dim i As Integer = 0
        Dim Leitura As String = Application.StartupPath & "\config.txt"
        Dim lines() As String = IO.File.ReadAllLines(Leitura)
        Dim total As Integer
        Dim caminho As String
        Dim acumulado As Integer
        Dim TodosOsCaminhos As String

        For i As Integer = 0 To 3
            caminho = lines(i)

            TodosOsCaminhos = TodosOsCaminhos + vbCrLf + caminho

            total = IO.Directory.GetFiles(caminho, "*.jpg").Length

            'soma os ficheiros "*.jpg" em TODOS os "caminhos"
            acumulado = acumulado + total
        Next

        'MsgBox(caminho)
        MsgBox("Existem os seguintes percursos no 'config.txt':" & vbCrLf & TodosOsCaminhos)
        'MsgBox(total)
        MsgBox("Total de imagens em todos os percursos:" & vbCrLf & acumulado)


    End Sub

Share this post


Link to post
Share on other sites
José Lopes

De facto o codigo feito pelo Joca parece-me mais limpo...mas eu fiz com o teu (só não criei o ficheiro txt, pus a path à unha) e ele devolveu-me o n de jpg's correctamente.

Assim sendo, o teu problema deve estar na leitura da path, será que estás a testar o índice do array correcto?


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Share this post


Link to post
Share on other sites
BrunoT

Obrigado pelas vossas ajudas :)

Quanto ao código que o joca pos, ele é, em traços gerais parecido com o meu ... e não funciona, dá-me sempre resultado 0.

José Lopes sim, até porque na msgbox(caminho) aparece a pasta correctamente.

Cumprimentos

Share this post


Link to post
Share on other sites
jpaulino

José Lopes sim, até porque na msgbox(caminho) aparece a pasta correctamente.

Aparece a pasta correcta e as fotos estão nessa pasta ou em subpastas ?

Se aparecem em subpastas podes fazer:

total = IO.Directory.GetFiles(caminho, "*.jpg", IO.SearchOption.AllDirectories).Length

Verifica também se a extensão dos ficheiros é *.jpg ou *.jpeg

Share this post


Link to post
Share on other sites
José Lopes

tás a testar se o caminho está a levar a "/"....

já tive uma série de problemas à pala disso...


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Share this post


Link to post
Share on other sites
BrunoT

Jpaulino sim está tudo na pasta e não em sub-pastas, quanto ás extensões foi das primeiras coisas que verifiquei, alterei para jpeg, JPG e nada, sempre o mesmo resultado.

José Lopes isso da "/" vou experimentar logo que chegue a casa, neste momento estou no trabalho e não tenho possibilidade de testar.

Obrigado pelas ajudas pessoal, é isto que faz deste fórum, um fórum de partilha de conhecimentos.

Share this post


Link to post
Share on other sites
Joca

Quanto ao código que o joca pos, ele é, em traços gerais parecido com o meu ... e não funciona, dá-me sempre resultado 0.

José Lopes sim, até porque na msgbox(caminho) aparece a pasta correctamente.

Então e, se só testares 3 linhas do teu código original? Por exemplo, no evento click do botão colocares:

Dim total As Integer
        
total = IO.Directory.GetFiles("C:\teste com imagens4\outra pasta qualquer", "*.jpg").Length

MsgBox(total)

Obrigatoriamente se a pasta final "outra pasta qualquer" não contiver imagens *.jpg dentro dela, o programa exibirá sempre zero!

A propósito do meu código: hás-de reparar que algumas coisas que existiam no teu código original, não se encontravam a pedir os dados pelo processo mais correcto.

Share this post


Link to post
Share on other sites
BrunoT

Joca obrigado pelas tuas ajudas :D realmente tens razão, o teu código está mais optimizado que o meu, à primeira vista como só li muito na diagonal pareceu-me igual, mas tem realmente algumas alterações.

Tenham calma comigo porque ainda ando na fase da pesquisa :)

O problema está resolvido em parte ... alterei o caminho para c:\imagens ... e ele já conta as imagens correctamente, o que eu tinha antes era a pasta de imagens dos "meus documentos" e ele aí não consegue contar, dá sempre 0 ... poderá ser por o caminho ser muito longo ?

Share this post


Link to post
Share on other sites
Joca

Ah! Estás a usar uma das pastas pré-definidas no windows. Tinha entendido mal.

Mas, de qualquer modo, devia dar pois, testei o percurso que coloquei em baixo como comentário e, funcionou. Outra opção é usar a opção pré-criada das "specialFolders":

Dim total As Integer

total = IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.jpg").Length
'Ou usas no percurso: C:\Documents and 
'Settings\TeuNomeNoComputador\Os meus documentos\As minhas imagens
MsgBox(total)

Share this post


Link to post
Share on other sites
BrunoT

Já fiquei a saber mais essa do SpecialFolders joca, que desconhecia totalmente :)

Aparentemente o problema está resolvido, o problema todo é porque as imagens estão dentro de "...\As minhas Imagens\Os meus Exemplos de Imagem" e sem eu saber porquê, o programa não consegue encontrar essa pasta, só "chega" até as Minhas Imagens.

Está desfeita a dúvida, agradeço a todos os que me ajudaram :D

Abraço

Share this post


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

×

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.