Escrever na primeira linha

pessoal, como posso escrever na primeira linha de um arquivo txt?
segue o código de como eu fiz.

public static void escreve(String texto) {
		String textoQueSeraEscrito = texto;
		FileWriter arquivo;
		try {
			arquivo = new FileWriter("Arquivo.txt",true);
			arquivo.write(textoQueSeraEscrito);
			arquivo.close();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

O seu programa escreve depois da última linha, conforme você pode comprovar rodando seu programa.

ok… mas…
como escrever na primeira?

Cara, dê uma estudada na classe RandomAccessFile e no metodo seek(int). Ela permite que voce percorra diferentes linhas do arquivo. Veja o exemplo;

try {
       File f = new File("c:\\tmp\\teste.txt");
            RandomAccessFile raf = new RandomAccessFile(f, "rw");

            // Seek to end of file
            raf.seek(f.length());

            // Append to the end
            raf.writeBytes("aString");
            raf.close();
} catch (IOException e) {
}

abrss

vlw!

No tempo dos mainframes, onde as linhas de um arquivo-texto tinham todas 80 caracteres (LRECL (80) para quem se lembra dessa terminologia de mainframes :slight_smile: ) daria para fazer isso (posicionar no byte número 0 de um arquivo e escrever por cima de N posições.)

Como você provavelmente vai perceber, se as linhas tiverem comprimentos diferentes, RandomAccessFile não resolve seu problema.

A resposta, infelizmente, é a seguinte: se seu arquivo tem linhas de tamanhos diferentes, você deve criar um novo arquivo - texto, contendo o conteúdo desejado, já que você não pode “escrever na primeira linha” diretamente, só depois da última linha.