GARANTIR DESCONTO

Fórum Ler arquivo .txt e transformar seu conteúdo em Array #568360

16/12/2009

0

Olá pessoal, eu sou iniciante (muito iniciante :neutral: ) em java. Eu tenho um arquivo .txt e e preciso fazer um código que acesse, leia esse arquivo e transforme cada linha dele em um vetor de String, ou seja, cada linha do arquivo tem que ser correspondente a um indice do vetor, sendo que o vetor tem que ter o tamanho do total da quantidade de linhas. Conseguindo fazer isso, eu preciso ter uma opção para: 1) Listar todos as linhas 2) Procurar um conteúdo qualquer nas primeiras 50 posições de cada linha. Eu já li a parte sobre arquivos e mais um monte de fóruns e não estou conseguindo entender. :cry: Um monte de cara ao invés de ajudar, postam códigos de dificil compreensão pra se aparecer ou querer aparecer que são bons demais e acabam confundindo mais. Sei que pra quem entende um pouco de java isso é muito fácil de fazer, mas eu estou começando com java na faculdade. Se alguém puder me ajudar a transformar um arquivo qualquer em um vetor de string eu ficaria muito grato. :shock:
Johnny Ribeiro

Johnny Ribeiro

Responder

Posts

17/12/2009

Johnny Ribeiro

Oi, então escreve o que é que voce já conseguiu fazer e que é que não está conseguindo entender? senão fica difícil ajudar... []] [quote="JohnnyDoAmaral"] Olá pessoal, eu sou iniciante (muito iniciante :neutral: ) em java. Eu tenho um arquivo .txt e e preciso fazer um código que acesse, leia esse arquivo e transforme cada linha dele em um vetor de String, ou seja, cada linha do arquivo tem que ser correspondente a um indice do vetor, sendo que o vetor tem que ter o tamanho do total da quantidade de linhas. Conseguindo fazer isso, eu preciso ter uma opção para: 1) Listar todos as linhas 2) Procurar um conteúdo qualquer nas primeiras 50 posições de cada linha. Eu já li a parte sobre arquivos e mais um monte de fóruns e não estou conseguindo entender. :cry: Um monte de cara ao invés de ajudar, postam códigos de dificil compreensão pra se aparecer ou querer aparecer que são bons demais e acabam confundindo mais. Sei que pra quem entende um pouco de java isso é muito fácil de fazer, mas eu estou começando com java na faculdade. Se alguém puder me ajudar a transformar um arquivo qualquer em um vetor de string eu ficaria muito grato. :shock:
Responder

Gostei + 0

17/12/2009

Johnny Ribeiro

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 
 */

public class Esbosso {
	public static void main(String[] args) {

		String nomeArquivo = null;
		String nomeArquivoCompleto = "C:\\Temp\\Esbosso\\src\\Contatos.txt";
		nomeArquivo = nomeArquivoCompleto;

		FileInputStream fin = null;
		BufferedReader in = null;
		String linha = null;
		int qtddLinhas = 0;

		String[] contatos = new String[qtddLinhas];

		try {

			fin = new FileInputStream(nomeArquivo);

			in = new BufferedReader(new InputStreamReader(fin));

			// IOException
			while (in.ready()) {
				// IOException
				linha = in.readLine();

				if (linha == null) {
					break;
				}

				linha = linha.trim();

				if (linha.length() != 0) {
					System.out.println(linha);

					qtddLinhas++;

				}
			}

			System.out.println("Linhas: " + qtddLinhas);

			// IOException
			fin.close();

			// IOException
			in.close();
		} catch (FileNotFoundException e) {
			System.out.println("Arquivo não encontrado ...");
			System.exit(1);
		} catch (IOException e) {
			System.out.println("Erro durante a leitura do arquivo ...");
			System.exit(1);
		}
	}
}
Essa é a parte da leitura do arquivo, e tá dando certo, ele tá mostrando as telas todos as linhas e no final a quantidade das linhas, o problema é fazer com que cada índice do vetor tenha uma linha do arquivo armazenando assim o arquivo inteiro em todas as posiçoes do vetor. eu fiz um array String[] contatos = new String[qtddLinhas]; mas nunca dá certo.
Responder

Gostei + 0

17/12/2009

Johnny Ribeiro

Ahh, acho que o erro está nesta parte:
		int qtddLinhas = 0;

		String[] contatos = new String[qtddLinhas];
cria um Array com 0 posições já que qtddLinhas (ainda) é zero. Portanto não tem como armazenar qualquer linha nele. O problema é saber o número de linhas antes de ler o arquivo. O mais fácil é usar uma ArrayList, que não tem tamanho fixo, para armazenar as linhas. Se for necessário é simples trabsformar num Array:
List<String> linhas = new ArrayList<String>();
...
while (...) {
    ...
        System.out.println(linha);
        linhas.add(linha);
        qtddLinhas++;    // desnecessario
    ...
}
String[] contatos = linhas.toArray(new String[linhas.size()]);
a última linha somente se for necessário obter um Array. []] [quote="JohnnyDoAmaral"]
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 
 */

public class Esbosso {
	public static void main(String[] args) {

		String nomeArquivo = null;
		String nomeArquivoCompleto = "C:\\Temp\\Esbosso\\src\\Contatos.txt";
		nomeArquivo = nomeArquivoCompleto;

		FileInputStream fin = null;
		BufferedReader in = null;
		String linha = null;
		int qtddLinhas = 0;

		String[] contatos = new String[qtddLinhas];

		try {

			fin = new FileInputStream(nomeArquivo);

			in = new BufferedReader(new InputStreamReader(fin));

			// IOException
			while (in.ready()) {
				// IOException
				linha = in.readLine();

				if (linha == null) {
					break;
				}

				linha = linha.trim();

				if (linha.length() != 0) {
					System.out.println(linha);

					qtddLinhas++;

				}
			}

			System.out.println("Linhas: " + qtddLinhas);

			// IOException
			fin.close();

			// IOException
			in.close();
		} catch (FileNotFoundException e) {
			System.out.println("Arquivo não encontrado ...");
			System.exit(1);
		} catch (IOException e) {
			System.out.println("Erro durante a leitura do arquivo ...");
			System.exit(1);
		}
	}
}
Essa é a parte da leitura do arquivo, e tá dando certo, ele tá mostrando as telas todos as linhas e no final a quantidade das linhas, o problema é fazer com que cada índice do vetor tenha uma linha do arquivo armazenando assim o arquivo inteiro em todas as posiçoes do vetor. eu fiz um array String[] contatos = new String[qtddLinhas]; mas nunca dá certo.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar