1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

C# leitura de ficheiros

Discussão em 'Programação' iniciada por guilherme, 20 de Dezembro de 2005. (Respostas: 6; Visualizações: 2618)

  1. guilherme

    guilherme Power Member

    Boa tarde!
    Comecei recentemente a usar o C# ja tendo conhecimentos de java, precisava de fazer a leitura de um ficheiro e carregad cada linha para um array, para isso estou a usar um método onde carrego o ficheiro e progressivamente vai guardando cada linha do ficheiro no array, se alguem me pudesse ajudar agradecia.

    private string[] linhas;

    public Construtor()
    {
    linhas = new string[20];
    }

    public void loadFile(string fileName)
    {
    }
     
  2. guilherme

    guilherme Power Member

    Mt obrigado pela resposta, entretanto la consegui fazer, agora deparo me com 1 problema q ja me tinha acontecido em java. Carrega me as linhas sempre duas vezes.

    public void loadFile(string fileName)
    {
    FileInfo theSourceFile = new FileInfo(fileName);
    StreamReader reader = theSourceFile.OpenText();

    string text;

    do
    {
    text = reader.ReadLine();
    //Console.WriteLine(text);
    linhas.Add(text);
    } while (text != null);

    reader.Close();

    foreach (string i in linhas)
    {
    Console.WriteLine(i);
    }
    }
     
  3. Karakatoa

    Karakatoa Power Member

    Olá

    Experimentei o código e só me listou cada uma das linhas uma vez, alias, já previa esse resultado pela simples leitura do código.
    O problema aparentemente poderá estar na forma como envocas o método loadFile. Repara que se chamares esse método várias vezes com o mesmo objecto ele irá sempre adicionar linhas ao array linhas uma vez que em ponto algum limpas o contedo do array.(Eu presumo que 'linhas' seja qualquer coisa do tipo ArrayList e nao um string[] porque o string[] não tem o método Add)

    Se mostrares o código onde chamas esse método pode ser que te dê uma ajuda mais concreta.

    Abraço
     
  4. guilherme

    guilherme Power Member

    Peço desculpa, por n ter disponibilizado o codigo todo, o objectivo é guardar cada linha no ArrayList. Devo ter qualquer coisa mal de certeza, no final do metodo esta um foreach apenas para listar o conteudo do arraylist e ai é q me apresenta valores repetidos



    private ArrayList linhas = new ArrayList();

    public GestaoF()
    {
    loadFile("attributes.txt");
    }

    public void loadFile(string fileName)
    {
    StreamReader file = new System.IO.StreamReader(fileName);

    int counter = 0;
    string line;

    while ((line = file.ReadLine()) != null)
    {
    linhas.Add(line);
    //Console.WriteLine(line);
    counter++;
    }

    file.Close();

    foreach (string i in linhas)
    {
    Console.WriteLine(i);
    }
    }
     
  5. Karakatoa

    Karakatoa Power Member

    Olá

    Fiz copy-paste do código e ele faz tudo correcto. De certeza que não estas a chamar o método loadFile de mais lado nenhum?
    Podes no entanto fazer uma experiência. põe

    Código:
    linhas.Clear();
    logo no inicio do metodo loadFile. Isso garante que o array está vazio quando começares a iterar o ficheiro...
     
  6. guilherme

    guilherme Power Member

    Boas, obrigado pela ajuda dispendida, foi mesmo 1 erro meu, tava a chamar o metodo duas vezes :sad: alem de o chamar no construtor tava tb a chama lo na classe principal no metodo main:lol: mais uma vez obrigado pelo tempo dispendido.
     

Partilhar esta Página