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

BrunoT

[Resolvido] Problema a contar ficheiros de uma directoria

13 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
'"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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora