Leitura de arquivo

8 respostas
C

Eae! to tentando pegar um arquivo em txt e ler ele no sistema, só que das 2600 linhas do arquivo ele retorna 200, e pra piorar são as linhas do 2000 ao 2200…

código:

package teste;


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;


public class recebe{
	
	
	public static void main(String[] args) throws IOException {
		FileReader reader = new FileReader("c:\CB270443.rem");
		BufferedReader leitor = new BufferedReader(reader);
		
		String linha = "";
		while ((linha = leitor.readLine())!=null){
			System.out.println(linha);
		}
		
		
	}
	
}

qual é o problema desse código??
valeu :slight_smile:

8 Respostas

C

puuuuuts!
tinha esquecido de deixar o eclipse sem limite de caracteres no console :smiley:

uyeeuheuehe

D

ola pessoal seguindo o mesmo padrao de duvida do nosso amigo caina27. Estou com um grande problema.
Como trabalho academico para o fim do semestre, estou refazendo um jogo antigo chamado yam(general), até ai blz. porem eu tenho que guarda o ultimos records do jogo e verificar se o atual bateu o record, entao pensei em usar um arquivo txt onde eu consigo ler o ultimo record e se caso sobreescrever-lo, até a hora de ler o txt, blz, sem nenhum problema porem nao consigo sobreescreve-lo, ja revirei a internet,livros e professores mais nao tive sucesso…
caso alguem puder me ajudar, desde ja fico muito grato…

T

Douglas campos:
ola pessoal seguindo o mesmo padrao de duvida do nosso amigo caina27. Estou com um grande problema.
Como trabalho academico para o fim do semestre, estou refazendo um jogo antigo chamado yam(general), até ai blz. porem eu tenho que guarda o ultimos records do jogo e verificar se o atual bateu o record, entao pensei em usar um arquivo txt onde eu consigo ler o ultimo record e se caso sobreescrever-lo, até a hora de ler o txt, blz, sem nenhum problema porem nao consigo sobreescreve-lo, ja revirei a internet,livros e professores mais nao tive sucesso…
caso alguem puder me ajudar, desde ja fico muito grato…

Você pode usar java.io.RandomAccessFile em vez de java.io.BufferedWriter ou PrintWriter. É que você não consegue “voltar” para trás e sobreescrever alguma coisa com BufferedWriter ou PrintWriter.

D

entendi, esse arquivo sera lido e sobreescrito…
porem nao sei se durante o codigo eu tenho que ler esse arquivo denovo ou eu ja posso adiciona a esse arquivo uma string ?

T

Posso explicar mais ou menos o que se pode fazer.

BufferedWriter, PrintWriter - você pode gravar uma linha de cada vez, sempre efetuando um “append” (ou seja, acrescentando ao final) do arquivo.

RandomAccessFile ( http://java.sun.com/javase/6/docs/api/java/io/RandomAccessFile.html ) - você pode escrever em qualquer posição do arquivo, mas você é que tem de controlar em que posição estão as linhas. O método “seek”, que posiciona um cursor para escrita e leitura, é em bytes, não em linhas, e você tem de saber exatamente onde é que você quer escrever. Na prática, você poderia usar apenas para tentar ler uma linha para trás (é meio chatinho, porque você tem de ficar lendo o arquivo “de trás para frente” até achar um terminador de linha), e sobreescrever a última linha. É um bocadinho chato, na verdade.

Na prática, eu recomendaria pegar o tal arquivo que contém os recordes do jogo, lê-lo inteirinho na memória linha por linha (use um ArrayList<String> para armazenar as linhas lidas), fechar o arquivo, pegar a informação que você quer (talvez modificando-a), e depois gravar tudo de volta.

D

perfeita, a sua teoria…
eu consegui ler o arquivo e consigo tambem ler uma linha a cada vez. porem uma pequena duvida insiste em permanecer. mais nao consigo que somente aquela linha seja apagada ou que ela receba um valor nulo.
existe algum comando por exemplo(linha.apague();)?.
na verdade eu nao preciso de nenhum dado do arquivo depois de te-lo lido.só quero que aquele unico numero de todo arquivo seja trocado por outro. porem nao consigo apagar o antigo . tem alguma forma ?

T

Então… um arquivo não é um array de linhas; portanto eu não tenho um método chamado “apague” ou coisa parecida. (Se você pensar bem, nem os arrays têm um método desses de “apagar” uma linha. Você tem de deixar um espaço vazio no array; não dá para você “remover” uma linha de um array puro.

D
belaza thingol depois de semanas ralando na frente do pc enfim o codigo saiu, como todo brasileiro nao dei um jeitinho, nao consegui apagar a linha, mais se eu nao for usa ela, é  acresentar uma linha nula entre a nova e a antiga assim ja resolve o meu problema, valeu mesmo  brigaduuuuuuuuuuuu

import java.io.File;

import java.io.RandomAccessFile;

import <a href="http://java.io">java.io</a>.*;
public class leitura {
	public static void main(String[] args) throws IOException {
	for(int i=0;i<10;i++){
		RandomAccessFile arquivo2 = new RandomAccessFile(new File("teste.txt"),
				"rw");
		String nula="";
		String leitura = "douglas\n";
		try {
			String linhas;
			arquivo2.writeUTF(leitura);
			arquivo2.writeUTF(nula);

		} catch (IOException e) {
			System.out.println("Erro ao escrever no arquivo!");
			System.exit(0);
		}
		FileReader reader = new FileReader("teste.txt");
		BufferedReader leitor = new BufferedReader(reader);

		String linha = "";
		while ((linha = leitor.readLine()) != null) {
			System.out.println(linha);
		}

	}
			}
}
Criado 28 de abril de 2009
Ultima resposta 29 de abr. de 2009
Respostas 8
Participantes 3