Gnrtuga Posted April 25, 2018 at 04:27 PM Report #610347 Posted April 25, 2018 at 04:27 PM 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.. :)
bsccara Posted April 27, 2018 at 03:12 PM Report #610359 Posted April 27, 2018 at 03:12 PM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now