Jump to content
Gnrtuga

For Each

Recommended Posts

Gnrtuga

Olá pessoal, tenho andado a fazer algumas pesquisas e tenho experimentado muita coisa, mas sem sucesso...

O objectivo é procurar se determinada palavra (neste caso internacional) existe dentro de algum ficheiro da pasta "Livro1" (todos os ficheiros são .txt) e retornar as ocorrências para um bloco de texto (pode ser para outra coisa qualquer)

Tenho o seguinte código:

 private async void MisturaPesquisa()
        {
            StorageFolder appInstalledFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
            StorageFolder assets = await appInstalledFolder.GetFolderAsync("Livro1");
            string Ficheiros = assets.GetFilesAsync().ToString();
            string BuscaPalavra = "internacional";
            List<string> ResultadosObtidos = new List<string>();


            foreach (string NomeFicheiro in Ficheiros)
            {
                string FicheiroTexto = File.ReadAllText(NomeFicheiro);
                if (FicheiroTexto.Contains(BuscaPalavra))
                {
                    ResultadosObtidos.Add(NomeFicheiro);
                }


            }
            //ResultadoPesquisaListV.Items.Add(FoundedSearch);
            MostraTudo.Text = ResultadosObtidos.ToString();

           
        }

mas dá-me erro no foreach, diz que não consegue converter char para string.

Será esta a melhor forma de fazer esta procura?

Obrigado.


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Share this post


Link to post
Share on other sites
bsccara

O método GetFilesAsync devolve uma lista de ficheiros, que estás a converter numa String, que no foreach estás a percorrer, caracter a caracter. É por isso que te dá um erro.

O que tens de percorrer é a própria lista; como exemplo vê aqui. Depois podes usar o método indicado aqui para ler o conteúdo de cada ficheiro.

Duas notas: 1) estás a usar métodos assincronos para aceder aos ficheiros, pelo que terás de usar o operador 'await' para esperar pela conclusão da leitura se quiseres manter a estrutura de código que tens; 2) este tipo de algoritmo simples só funciona bem para ficheiros de tamanho moderado (~< 5% da RAM da máquina), pois todo o ficheiro é carregado duma vez.

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

×
×
  • 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.