![]() |
Ajuda - Aplicação para adicionar texto a ficheiro existente - Versão de Impressão +- Forum Pplware (http://forum.pplware.com) +-- Fórum: Mais Tech (/forumdisplay.php?fid=11) +--- Fórum: Programação e Web (/forumdisplay.php?fid=16) +--- Tópico: Ajuda - Aplicação para adicionar texto a ficheiro existente (/showthread.php?tid=4697) Páginas: 1 2 |
Ajuda - Aplicação para adicionar texto a ficheiro existente - pmorais - 31-01-2010 10:57 Olá a todos. Imaginem que tenho um ficheiro de texto (lista.txt) com o seguinte conteúdo: Texto 1 (ABC) Precisava de uma aplicação onde pudesse introduzir texto adicional para ABC e que o resultado final fosse um novo ficheiro de texto com os valores introduzidos. Além disso ter a possibilidade de criar novas linhas onde se mantenha "Texto 1" e acrescente à frente novos valores. Alguma ajuda? Muito Obrigado Cumprimentos a todos RE: Ajuda - Aplicação para adicionar texto a ficheiro existente - RaCcOn - 31-01-2010 14:09 Qual a linguagem de programação que queres usar? RE: Ajuda - Aplicação para adicionar texto a ficheiro existente - pmorais - 31-01-2010 15:16 A questão é essa, não sou programador ![]() Na faculdade "aprendi" qualquer coisita de Pascal, mas já lá vão uns anos... A ideia era criar uma playlist, em que o texto fixo é a path onde estão os ficheiros, e o texto a introduzir é o nome do ficheiro. Essa playlist não tem um número fixo de linhas, mas a path é sempre igual. Ou seja, o resultado final do ficheiro de texto, seriam linhas com o caminho completo de ficheiros, tendo apenas de se introduzir o nome do ficheiro. RE: Ajuda - Aplicação para adicionar texto a ficheiro existente - aucrun - 01-02-2010 00:33 Hoje não estou perto do meu ambiente de desenvolvimento, mas amanhã faço-te umá função simples em C# que te resolve o problema, pode ser? RE: Ajuda - Aplicação para adicionar texto a ficheiro existente - pmorais - 01-02-2010 10:21 Olá Aucrun, Agradeço imenso a tua disponibilidade. Muito Obrigado. RE: Ajuda - Aplicação para adicionar texto a ficheiro existente - aucrun - 04-02-2010 11:35 pmorais, antes do mais desculpa-me pela demora na resposta, mas problemas pessoais levaram-me a uma ausência inesperada do Forum. Queria antes de avançar para um código-sample pedir-te mais algumas infos sobre o teu problema: Pelo que percebi, precisas duma função que mediante o nome do ficheiro escolhido, te inclua nesse mesmo ficheiro algum texto, correcto? Tipo: Função ActualizaFicheiro(string nomeFicheiro, string[] linhas) foreach( string linhaActual in linhas) ficheiro.AppendText(linhaActual) Isto é apenas um esboço para ver se percebo o que pretendes ... É algo deste género apenas? RE: Ajuda - Aplicação para adicionar texto a ficheiro existente - pmorais - 04-02-2010 20:32 Olá Aucrun, Não tens nada que pedir desculpa, eu é que agradeço a tua disponibilidade. É assim: um ficheiro de texto (é uma playlist asx) com o nome lista.txt, tem o seguinte conteúdo: ==================================================================== <ASX version="3.0"> <REPEAT> <ENTRY><REF href="http://www.sitedeteste.net/videos/video1.wmv" /></ENTRY> <ENTRY><REF href="http://www.sitedeteste.net/videos/video2.wmv" /></ENTRY> </REPEAT> </ASX> ==================================================================== A ideia era introduzir nomes de ficheiros uma lista, tipo: video3.wmv, teste.mpg, video124.avi... e obter como resultado final um ficheiro de texto com o seguinte conteúdo: ==================================================================== <ASX version="3.0"> <REPEAT> <ENTRY><REF href="http://www.sitedeteste.net/videos/video3.wmv" /></ENTRY> <ENTRY><REF href="http://www.sitedeteste.net/videos/teste.mpg" /></ENTRY> <ENTRY><REF href="http://www.sitedeteste.net/videos/video124.avi" /></ENTRY> </REPEAT> </ASX> ==================================================================== Neste caso, tem apenas 3 linhas, mas a ideia era ter tantas linhas quantas os nomes dos ficheiros que se introduz na lista. Desculpa o testamento ![]() Espero que esteja tudo bem por aí (relativamente ao problema pessoal que referiste) e mais uma vez obrigado. RE: Ajuda - Aplicação para adicionar texto a ficheiro existente - aucrun - 06-02-2010 15:31 Olá pmorais, quanto ao meu problema pessoal as coisas estão a compor-se aos poucos, no entanto, temos um outro problema. A solução para o teu problema é extremamente simples, mas mais uma vez não estou com o Visual Studio por perto. No entanto, explico-te desde já a função que te vou criar na 2ªFeira logo de manhã: - (ants dos mais quero saber se tens a .NET Framework instalada nos PCs onde vais correr a aplicação, pois vou usar um conceito que são as Lists (semelhantes a Arrays, mas com mais mnétodos e propriedades próprias), que só se encontram disponiveis nessa versão da Framework. 1º Passo será construir-te uma função que te devolva a dita List com todos os ficheiros que pretendes inserir no ficheiro de texto 2º Passo será criar-te um mecanismo que com a List<strings> criada em 1º Passo, vai gerar o ficheiro .txt num Path indicado. É simples, e faço-te isso na 2ª Feira de manhã sem falta, combinado? RE: Ajuda - Aplicação para adicionar texto a ficheiro existente - pmorais - 07-02-2010 12:37 Olá Aucrun, Espero que tudo esteja bem por aí ![]() Relativamente à tua pergunta, sim tenho o .NET Framework instalado no PC. Uma vez mais mais muito obrigado. RE: Ajuda - Aplicação para adicionar texto a ficheiro existente - aucrun - 09-02-2010 10:31 Então cá vamos ... Finalmente tive um tempinho para te fazer a Classe. Repara, antes do mais que se trata duma Classe, mas no entanto, podes sempre usar as funções que te envio noutras Classes ou Forms. A parte inicial, corresponde apenas às Propriedades da Classe, onde tens identificadas as variáveis que vão entrar no seu funcionamento. Para chamares a classe terás de a inicializar com os parâmetros que são essenciais, ou seja algo do género: List<string> listaTestes = new List<string>(); listaTestes.Add("Item 1"); listaTestes.Add("Item 2"); listaTestes.Add("Item 3"); CPlayList lista = new CPlayList("C:\\Temp", "fileTeste.log", listaTestes); Quanto à classe propriamente dita, é simples, e apenas faz o seguinte: - Aceita os parâmetros acima instanciados; - Verifica se todos estão preenchidos - Verifica se já existe algum ficheiro com o mesmo nome na mesma directoria (e neste caso apaga-o, embora possas fazer o que bem entenderes) - Cria o ficheiro, começando pelas 2 linhas iniciais constantes, colocando o conteúdo da Lista Variável, e terminando com as 2 ultimas linhas constantes. class CPlayList { string path = ""; string fileName = ""; List<string> entriesList = null; const string firstRow = "<ASX version='3.0'>"; const string secondRow = "<REPEAT>"; const string iniText = "<ENTRY><REF href="; const string endText = "/></ENTRY>"; const string almostLastRow = "</REPEAT>"; const string lastRow = "</ASX>"; public string msgErro = ""; public CPlayList(string caminho, string ficheiroComExtensao, List<string> listaEntradas) { path = caminho; fileName = ficheiroComExtensao; entriesList = listaEntradas; CriaPlayList(); } public bool CriaPlayList() { msgErro = ""; try { if((path=="") || (fileName=="") || (entriesList==null) || (entriesList.Count==0)) { msgErro="Há valores que não se encontram preenchidos"; return false; } //ELIMINAR O FICHEIRO CASO EXISTA if (!EliminaPreviousFile(out msgErro)) { msgErro += " - ERRO: Ocorreu um erro ao eliminar o ficheiro"; return false; } //IDENTIFICAR O FICHEIRO (COM CAMINHO COMPLETO) PARA CRIAR COM A PLAYLIST. string ficheiro = path + "\\" + fileName; //ADICIONAR AS DUAS PRIMEIRAS LINHAS QUE SÃO CONSTANTES File.AppendAllText(ficheiro, firstRow); File.AppendAllText(ficheiro, System.Environment.NewLine + secondRow); //INSERIR A LISTA foreach (string itemLista in entriesList) { string inputText = System.Environment.NewLine + iniText + itemLista + endText; File.AppendAllText(ficheiro, inputText); } //ADICIONAR AS DUAS ULTIMAS LINHAS QUE SÃO CONSTANTES File.AppendAllText(ficheiro, System.Environment.NewLine + almostLastRow); File.AppendAllText(ficheiro, System.Environment.NewLine + lastRow); return true; } catch (Exception ex) { msgErro = ex.Message; return false; } } private bool EliminaPreviousFile(out string msgErro) { msgErro = ""; try { if (File.Exists(path + "\\" + fileName)) File.Delete(path + "\\" + fileName); return true; } catch (Exception ex) { msgErro = ex.Message; return false; } } } A negrito estão os títulos das Funções, e com "//" estão alguns comentários meus. Espero que te ajude, e qualquer duvida, já sabes ... |