Alguém sabe como faço uma quebra de linha no conteúdo de uma String que eu gravo em um arquivo .txt?
(na verdade é .log, mas acho que não faz diferença)
Eu já tentei usar os caracteres \b, \f, \n, \r e \t, mas nenhum deles funcionou…
Lí uma vez em um livro que os caracteres de quebra de linha no java são esses, o cara até dava uma frase pra decorar e não esquecer:
" big farmers need red tractors "
Com o \b, \f, \n, e \r fica aquele quadradinho, mas nao faz a quebra.
Com o \t fica um espaço, como se fosse um TAB, mas nao faz a quebra.
Preciso colocar várias linhas no .log, e não tudo junto ou quadradinho como está acontecendo.
Tem razao, vc pode chamar o arquivo de .lala que vai continuar sendo um txt, usuarios windows tem mania de conectar extensao de arquivo com o tipo de arquivo.
Como vc ta imprimindo no arquivo ?
Usando PrintStream object?
Tem um programa aqui que eu uso o PrintStream e funciona de boa usando o \n
//Daniel
R
Rage
To fazendo assim:
File myFile = new File(myDir, name);
FileWriter fwriter = new FileWriter(myFile);
fwriter.write(content.toCharArray());
fwriter.close();
A
alissin
Usa assim fii...
StringnomeArquivo=null;try{Filedir=newFile("C:\\arquivos\\"); dir.mkdirs(); nomeArquivo = "C:\\arquivos\\teste.log"; FileWriter fout = new FileWriter(nomeArquivo); PrintWriter prt = new PrintWriter(fout); StringBuffer arq = new StringBuffer(); arq.append("valor1"+"#"+valor2+"\n");prt.println(arq.toString());prt.close();}catch(Exceptione){throwe;}
[]`s
Espero ter ajudado!!!
A
arquiris
Usa iso aqui ó:
System.getProperty(“line.separator”);
W
windsofhell
importjava.io.*;publicclassWriteFile{Filefile;PrintStreamps;publicWriteFile(){file=newFile("teste.txt");try{ps=newPrintStream(file);ps.print("imprimi no arquivo - 1 \n");ps.print("imprimi no arquivo - 2\n ");ps.close();}catch(FileNotFoundExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){newWriteFile();}}
Suponha que eu esteja salvando um arquivo no Linux e use o System.getProperty pra me dar os caracters de quebra de linha. No linux será retornado \n. Ok, funcionará.
Agora imagine que você lerá esse mesmo arquivo no Windows. Para manter as coisas “nos conformes”, você também utilizará o System.getProperty, só que agora o sistema (Windows) retornará que as linhas são separadas por \r\n. Resultado: você não vai conseguir separar as linhas pq o OS vai estar dizendo que é necessário ter um return carriage entre elas e ele não existe.
O que vocês pensam sobre isso?
A
alissin
bom… eu uso \n tanto no windows quanto no linux e funciona…
tanto é que desenvolvi no windows, testando em windows e hoje roda em linux normalmente!
[]'s
Y
Yky_Mattshawn
alissin:
bom… eu uso \n tanto no windows quanto no linux e funciona…
tanto é que desenvolvi no windows, testando em windows e hoje roda em linux normalmente!
[]'s
Então…
Eu também sempre uso apenas o \n porque não sei como se comportará se eu ficar o System.getProperty
T
thiago.correa
Usar o \n não te dá garantia de como ele se portará em diferentes plataformas, e não é mais “seguro”, o certo mesmo é suar o System.getProperty(“line.separator”); pois ele pega o caractere que representa a quebra de linha para a plataforma na qual o seu programa está rodando, ao usar o \n e abrir o arquivo no notepad do windos, aparace um quadrado não preenchido, já usando o System.getProperty(“line.separator”); ele quebra a linha
Y
Yky_Mattshawn
Sim, cara, mas veja as duas direções do problema:
*** quando eu disser o(s) caractere(s) a ser(em) usado(s) na quebra, leve em consideração uma chamada ao System.getProperty(“line.separator”)
Criei um arquivo no Windows usando a quebra de linha “\r\n”. Perfeito: se eu abrir no notepad, as linhas se quebrarão perfeitamente. Se eu tentar abrir esse arquivo no Linux e quebrar as linhas pelo System.getProperty(“line.separator”), ele quebrará por “\n”. Então, como o Windows também utiliza um “\n” na sua quebra, o Linux fará tudo certinho.
*** invertendo os papéis
Suponha que você criou um arquivo no Linux e quebrou as linhas usando os caracteres de chamada ao System.getProperty(“line.separator”). O Linux irá apresentar os documentos perfeitamente por as linhas têm um “\n” entre si. Então, você resolve que quer abrir esse arquivo no Windows. Claro que, para manter tudo “certo”, você chamará os caracteres de quebra de linha pelo System.getProperty(“line.separator”), e o Windows vai te retornar o que? Isso: “\r\n”. Resultado: no Linux você usou apenas “\n”, e o Windows exige “\r\n”, se você der, por exemplo, um minhaStringDoArquivo.split(System.getProperty(“line.separator”)), n]ão vai conseguir separar nada, porque o Linux não usa o return carriage (caractere \r).
Por isso que eu disse que uso sempre o “\n” porque é o caractere que é suportado pelas duas plataformas.