Quebra de linha no txt

12 respostas
aesimoes

Ola!, alguém saberia me dizer como faço para que cada dado inserido no txt seja inserido em uma nova linha?

Obrigado.

12 Respostas

Nicolas_Fernandes

Faça uso do método writeLine() da classe BufferedWriter. A cada linha inserida, ele pula uma linha dentro do arquivo texto.
É algo parecido com o código abaixo:

public void gravarEmArquivoTexto(String caminhoArquivo, List<String> linhas) throws IOException {

    FileWriter fileWriter = new FileWriter(new File(caminhoArquivo));
    BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

    for (String linha : linhas) {
        bufferedWriter.writeLine(linha);
    }
    
    bufferedWriter.close();
    fileWriter.close();
}

Abraços!

romarcio

Dai vai depender de qual classe você está usando para manipular a criação do txt. Da uma olhada nesse tutorial:manipulando-arquivo-txt-com-java

aesimoes

Bom, com essas informações já da pra tentar algo!, assim que tiver o resultado vou postar aqui para vcs!

valeu!

aesimoes

Pessoal, estou queimando a cabeça pra resolver isso, mais oque eu esqueci de avisa-los é que a programação é para J2ME, fiz o código que salva os dados do TextField, DateField… etc, tudo certinho, ela grava na primeira linha no txt, mas nas próximas inclusões ele salva em cima dos dados da primeira linha, como poderia fazer pra fazer que sempre inclua uma linha nova para salvar os dados ou salve de baixo pra cima, ou algum esquema de StringBuffer.

Vai o meu código abaixo para facilitar.

abraço

FileConnection fc = (FileConnection)  
             Connector.open("file://localhost/root1/teste30.txt", Connector.READ_WRITE); // PC
           //Connector.open("file:///Storage Card/teste30.txt");  // Windows mobile
           //Connector.open("file:////teste30.txt");             // Palm TX
                     
                                     
             OutputStream is = fc.openDataOutputStream();
                          
             
             Date sysdate = new Date();  
             Calendar cal = Calendar.getInstance();
             cal.setTime(this.Datahora.getDate());  
                     
             is.write(new String("\r\n"+tfNome.getString() +"-"+ tfFone.getString() +"-"+ sexo.getString(sexo.getSelectedIndex())).getBytes());
             is.write(new String("-").getBytes());
             is.write(new String (String.valueOf(cal.get(Calendar.DAY_OF_MONTH)) +"/"+ String.valueOf(cal.get(Calendar.MONTH)+1) +"/"+ String.valueOf(cal.get(Calendar.YEAR))).getBytes());
             is.write(new String("-").getBytes());
             is.write(new String(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)) +":"+ String.valueOf(cal.get(Calendar.MINUTE)) +":"+ String.valueOf(cal.get(Calendar.SECOND))).getBytes());                      
        
             fc.close();
nel

Oi!

Use o PrintWriter.

Abraços.

JM4X

Crie um FileWriter, é nele que se define o modo incremental de escrita em um arquivo.

Veja o exemplo:

FileWriter fileWriter = null;
PrintWriter writer = null;
try {
	// Cria uma instância que referencia um arquivo.
	File file = new File("Arquivo.txt");
	// Cria um writer para um arquivo com modo incremental ligado.
	fileWriter = new FileWriter(file, true);
	// cria um writer mais amigável para escrita.
	writer = new PrintWriter(fileWriter);
	// Escreve o texto passado como parâmetro e quebra a linha.
	writer.println("Linha 1");
} catch (IOException ex) {
} finally {
	// liberando recursos
	try {
		writer.close();
		fileWriter.close();
	} catch (IOException ex) {
		System.err.println("fileWriter.close() lançou uma exceção: " + ex.getMessage());
	}
}
nel

Eu só recomendo adicionar a seguinte verificação no bloco finally:

} finally { // liberando recursos try { if(null != writer) writer.close(); if(null != fileWriter) fileWriter.close(); } catch (IOException ex) { System.err.println("fileWriter.close() lançou uma exceção: " + ex.getMessage()); } }

Evitar um possível NullPointerException.

aesimoes

Sim, mas em J2ME aceita FileWriter?

nel

Cara, nunca programei em J2ME, mas não vejo porque não aceitaria uma API da IO nativa do Java.
Você já tentou por acaso? :slight_smile:

JM4X

o nel tem razão!
código corrigido:

FileWriter fileWriter = null;
PrintWriter writer = null;
try {
	// Cria uma instância que referencia um arquivo.
	File file = new File("Arquivo.txt");
	// Cria um writer para um arquivo com modo incremental ligado.
	fileWriter = new FileWriter(file, true);
	// cria um writer mais amigável para escrita.
	writer = new PrintWriter(fileWriter);
	// Escreve o texto passado como parâmetro e quebra a linha.
	writer.println("Linha 1");
} catch (IOException ex) {
	System.err.println("o construtor \"FileWriter(file, true)\" lançou uma exceção: " + ex.getMessage());
} finally {
	// liberando recursos
	try {
		if (writer != null) {
			writer.close();
		}
		if (fileWriter != null) {
			fileWriter.close();
		}
	} catch (IOException ex) {
		System.err.println("O método \"fileWriter.close()\" lançou uma exceção: " + ex.getMessage());
	}
}
aesimoes

em J2ME dentro de IO não tenho o FileWrite olhe abaixo na imagem o que tenho dentro de IO

http://imageshack.us/photo/my-images/10/97261102.jpg/

como sera que se faz em J2ME?

JM4X

num manjo de j2me, vê se isso te ajuda.
http://developers.sun.com/mobility/apis/ttips/fileconnection/

Criado 14 de agosto de 2011
Ultima resposta 15 de ago. de 2011
Respostas 12
Participantes 5