Jump to content
blck

Ajuda Leitura de Ficheiros

Recommended Posts

blck

Boa tarde a todos estou com um pequeno problema num projecto que estou a desenvolver.

É uma aplicação Desktop em .NET

O meu problema é que tenho vários ficheiros para ler de diferentes tipos e diferentes extensões, essa informação tem de ficar guardada em memória logo quantos ficheiros tenho é quantas classes existem.

Como é logico fazer varios metodos em cada classe para ler o tipo de ficheiro não é boa politica, como tal quero implementar os famosos padroes para simplificar isto.

O maior problema é mesmo a estrutura de ficheiros pois alguns tem mais colunas outros a sua leitura nao começa na 1ª linha etc...

A minha ideia seria implementar uma Strategy ou um Adapter que independemente da extensao escolhida do ficheiro ele enviar para um metodo generico e dai redirecionar para o sitio correcto, o meu problema é como sei onde deve começar a ler e que objecto vai criar para guardar os dados em memoria (Listas).

Peço desculpa pelo tema um pouco diferente mas se for possivel fazer aqui um mini brainstorm seria bom pois, na programação a troca de ideias ajuda imenso.

Obrigado.

Share this post


Link to post
Share on other sites
bioshock

Mostra-nos as estruturas dos ficheiros e o que já tentaste desenvolver.

Share this post


Link to post
Share on other sites
blck

Pequenos exemplos

TITULO Do Ficheiro:

ID x y Z

----------------------------------------------------

1 7898.385 7668.367 7.5

a b c d e f g h i j

2011 5 1 0 0 0 1 0.5 0.5 0.2

Ambos ficheiros TXT, cada ficheiro pertence a um objecto diferente a ter atençao que o exemplo2 o ficheiro so deve começar a ler a partir da 3ª linha que e onde tem o cabeçalho e no 1º exemplo e a partir da 2ª que e onde aparece o cabeçalho

Existem do mesmo genero mas em CSV.

No que toca a codigo, o que fiz e apenas rabiscos, nada de concreto...

Share this post


Link to post
Share on other sites
bioshock

É complicado fazeres o que queres (diminuir o número de funções), quando na verdade, pelo exemplo que deste, não existem padrões.

(...) famosos padroes para simplificar isto.

O maior problema é mesmo a estrutura de ficheiros pois alguns tem mais colunas outros a sua leitura nao começa na 1ª linha etc...

Tu podes, se quiseres, fazer só uma função. Para simplificar, terá uma variável [Optional] dentro da mesma, e uns quantos cases.

Share this post


Link to post
Share on other sites
blck

pois eu entendo, ando as voltas disto para tentar fazer uma simplificação, mas se calhar o mesmo vai ser cada dependendo do ficheiro cada classe vai tratar da sua informação.

também ja estive a ler os padroes strategy e adapter de forma mais detalhadas e não vejo maneira de fazer isto.

obrigado :)

Edited by blck

Share this post


Link to post
Share on other sites
legd1991

Vais ter sempre um método para cada tipo de ficheiro. Sempre que vais ler um ficheiro vês a extensão e dependendo da função chamas a função adequada, depois o que podes ter é uma classe genérica que vai servir para gravar a informação dos ficheiros.

Share this post


Link to post
Share on other sites
Nuno Gomes

Outra abordagem é usar o padrão Publisher/Subscriber (Observer Pattern).

Neste cenário terás múltiplos Subscritores mas cada um aceita um determinado tipo de extensão.

O Publicador publicaria para todos os Subscritores o caminho do ficheiro.

Com esta abordagem ganhas estrutura, separação de contexto, menos complexidade e maior facilidade de leitura e manutenção.

Existem imensos exemplos deste padrão e poderás encontrar facilmente numa pesquisa, no entanto aqui fica 1 exemplo: http://stackoverflow.com/questions/6036104/publish-subscriber-pattern-in-c-sharp-advice-needed

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.