Jump to content

Ajuda Leitura de Ficheiros


blck

Recommended Posts

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

É 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.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

Link to comment
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.