private void LerDeArquivo(bool ehCidade) // metodo usado para ler os dois arquivos que apenas recebe o boolean que indica se e cidade { if (dlgAbrir.ShowDialog() == DialogResult.OK) //Descobriremos o caminho do arquivo desejado { StreamReader arq = new StreamReader(dlgAbrir.FileName); // abertura do arquivo try { if (!ehCidade) // se for um arquivo de caminhos entre cidades { while (!arq.EndOfStream) // enquanto o arquivo nao terminou, percorremos { CaminhoEntreCidades c = new CaminhoEntreCidades(arq.ReadLine()); // le o caminho do arquivo caminhos[c.Destino, c.Origem] = c; // armazena o caminho na matriz } } else // se for um arquivo de cidades { while (!arq.EndOfStream) // enquanto o arquivo nao terminou, percorremos { Cidade c = new Cidade(arq.ReadLine()); // le a cidade do arquivo cidades.Incluir(c); // armazena a cidade na arvore } } } catch // caso arquivo nao esteja nos padroes de dados pre definidos, informa o usuario e chama novamente o metodo { MessageBox.Show("Por favor, selecione um arquivo válido!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); LerDeArquivo(ehCidade); } arq.Close(); // fecha o arquivo lido } }
private void Form1_Load(object sender, EventArgs e) { //Abertura do primeiro arquivo --> CidadesMarte.txt var arq = new StreamReader("CidadesMarte.txt"); arvore = new ArvoreBinaria <Cidade>(); string linha = null; while (!arq.EndOfStream) { linha = arq.ReadLine(); arvore.Incluir(new Cidade(linha)); qtdCidades++; } arq.Close(); //Abertura do segundo arquivo --> CaminhosEntreCidadesMarte.txt var arq2 = new StreamReader("CaminhosEntreCidadesMarte.txt"); matriz = new Caminho[qtdCidades, qtdCidades]; string linha2 = null; while (!arq2.EndOfStream) { linha2 = arq2.ReadLine(); matriz[int.Parse(linha2.Substring(0, 3)), int.Parse(linha2.Substring(3, 3))] = new Caminho(linha2); } arq2.Close(); //Abertura do terceiro arquivo --> CidadesMarteOrdenado.txt var arq3 = new StreamReader("CidadesMarteOrdenado.txt"); lsbOrigem.Items.Clear(); lsbDestino.Items.Clear(); string linha3 = null; while (!arq3.EndOfStream) { linha3 = arq3.ReadLine(); lsbOrigem.Items.Add(linha3.Substring(0, 3) + " - " + linha3.Substring(3, 15)); lsbDestino.Items.Add(linha3.Substring(0, 3) + " - " + linha3.Substring(3, 15)); } arq3.Close(); }