Problemas com arquivos

2 respostas
C
import java.io.*;

import javax.swing.*;

public class LeituraTXT {

	public static void main(String[] args) {
		String arquivo = JOptionPane.showInputDialog("Informe o nome do arquivo, com caminho e extensão:");
		String str=null;
		BufferedReader fin=null;
		try
		{
			fin = new BufferedReader(new FileReader(arquivo));
		}
		catch (Exception e)
		{
			System.out.println("O arquivo " + arquivo +" nao pode ser aberto!!");
			System.exit(1);
		}
		try
		{
			while (fin.ready())
			{
				try
				{
					str= fin.readLine();
					/*
					 * PROBLEMA
                                         * PROBLEMA
					 * PROBLEMA
					 */
					if (str==null)
						break;
				}
				catch(IOException e)
				{
					//.....
				}
			}
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		//fechando o arquivo
		try
		{
			fin.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

Ae galera o problema esta ali no comentario!!!!!!!!!!!

eu vou ter um arquivo txt assim:

http:\\www.pucpr.br
http:\\www.terra.com.br
http:\\www.uol.com.br

Dai quando eu for fazer a leitura eu vou ter que pegar cada linha e executar uma ação.

Entao na leitura do arquivo eu teria que ver quando acabace a linha eu pegar soh a linha e colocar em uma variavel do tipo String links[];

e ai qual a solução???

obrigado

2 Respostas

T

Primeiro “acabace” é com ss: “acabasse”. “Acabace” parece do verbo “acabaçar” (não me pergunte o que é isso) :wink:

Depois, você pode fazer o seguinte: como você não sabe quantas linhas tem seu arquivo, você tem três opções.

Uma delas é ler o arquivo duas vezes (a primeira para contar as linhas, a segunda para fazer a leitura). Para arquivos pequenos você nem sente a diferença.

A segunda é criar um array de strings, e à medida que você for lendo o arquivo, redimensionar esse array (é meio brutal, porque você tem de fazer algo como:

String[] linhas = new String[0];
int nLinhas = 0;
String linha;
while ((linha = fin.readLine()) != null) {
    nLinhas++;
    String[] tmp = new String[nLinhas];
    System.arraycopy (linhas, 0, linhas.length, tmp, 0);
    linhas[nLinhas-1] = linha;
}

A terceira, que é mais simples, é esquecer do array, e usar um ArrayList:

List listLinhas = new ArrayList();
String linha;
while ((linha = fin.readLine()) != null) {
    listLinhas.add (linha);
}
String[] linhas = (String[])listLinhas.toArray(new String[0]);
C

ae valeu, resolvido meu problema!!!

Criado 4 de abril de 2005
Ultima resposta 4 de abr. de 2005
Respostas 2
Participantes 2