Pular linha ao salvar dados em um arquivo txt java
19 respostasResolvido
java
M
maaelphd
Bom dia Galera, estou fazendo o seguinte… Crio um arquivo bat, e executo ele… No bat tem um comando pra exportar pro C: um arquivo do Registro do windows, na extensão *.reg . Eu leio este arquivo e salvo os dados dele num vetor de strings, depois escreve ele num outro arquivo no formato *.txt. o problema é que quando escrevo no txt ele não pula linha de jeito maneira. Já tentei usar “\r\n”, “%n” . Tanto na parte que lê, e na parte que grava, mas nada vai… Ele salva tudo junto, numa string grande, sendo que no vetor salva certinho tipo cara linha do arquivo.reg numa posição do vetor.
Codigo>>>>
publicStringcodLoja()throwsIOException,InterruptedException{String[]separa=newString[10000];// cria um arquivo batFileWritercreateArq=newFileWriter("C:\\CMDcodLoja.bat");// classe para escrever no arquivo.PrintWriterwriteArq=newPrintWriter(createArq);writeArq.printf("cd\\");// escreve CD\writeArq.printf("%n");// Da EnterwriteArq.printf("REG EXPORT "+"\"HKLM\\SOFTWARE\\LOJAD7\""+" codLoja.reg");// comando para copiar a chavecreateArq.close();Processpro=Runtime.getRuntime().exec("cmd.exe /c C:\\CMDcodLoja.bat");// Executar o batpro.waitFor();try{FileReaderlerReg=newFileReader("C:\\codLoja.reg");BufferedReaderarqRead=newBufferedReader(lerReg);Stringline=arqRead.readLine();inti=0;while(line!=null){separa[i]=line;line=arqRead.readLine();i++;}FileWritercreateReg=newFileWriter("C:\\codLoja.txt");PrintWriterprintArq=newPrintWriter(createReg);i=0;while(separa[i]!=null){printArq.printf(separa[i]);printArq.printf("%n");i++;}printArq.close();}catch(IOExceptione){e.printStackTrace();}Filefile1=newFile("C:\\codLoja.reg");file1.delete();Filefile2=newFile("C:\\CMDcodLoja.bat");file2.delete();System.exit(0);return"";}
Já tentou usar o println ao invés de usar o printf?
J
JeanJavaMan1 like
Vc pode usar a Classe BufferedWrite para escrever no arquivo ele tem um método que pula uma linha é o método é newLine()
ex:
FileWritercreateArq=newFileWriter("C:\\CMDcodLoja.bat");BufferedWriteescrever=newBufferedWrite(createArq);escreve.write("Texto parte 1");//pulaumalinhaescrever.newLine();escrever.write("Texto parte 2");escrever.flush();escrever.close();
M
maaelphd
tentei e também não foi =/
M
maaelphd
tentei assim Jean ele continua salvando tudo numa linha só
salva assim no txt
Windows Registry Editor Version 5.00ഀഀ[HKEY_LOCAL_MACHINE\SOFTWARE\LOJAD7]ഀ
estes ഀഀ . Seriam a quebra de linha mas vem assim!
Jean, também não…
Eu fui fazer um teste e parece que ta dando certo. Não sei por que esta salvando estes “ഀ”…
Acabei de instalar o NotePad ++ e esta abrindo com quebra de linha certinho… O problema esta no bloco de notas mesmo, agora o por que eu não sei… mas acho que assim ja da pra mim trabalhar… haha
NotePad ++ >
Windows Registry Editor Version 5.00ഀ
ഀ
[HKEY_LOCAL_MACHINE\SOFTWARE\LOJAD7]ഀ
"TipoInstalacao"="0"ഀ
Bloco de Notas >
Windows Registry Editor Version 5.00ഀഀ[HKEY_LOCAL_MACHINE\SOFTWARE\LOJAD7]ഀ"TipoInstalacao"="0"ഀ
Vai saber, mas valeu pela ajuda!!
J
Solucao aceita
JeanJavaMan1 like
Estranho mesmo, deve ser algum code q ele ta salvando q não é compatível, encontrei este exemplo aqui:
Quando Faço um FileWrite normal, ele salva em UTF-8 acho que nas versões mais novas do java deve ser assim sei la…
Já no arquivo.reg… ele salva no formato encoding UCS-2 LE BOM
Quando passo do *.reg pro txt ele mantem o formato…
vou dar uma pesquisada por encodings aqui, value mesmo!
J
JeanJavaMan1 like
Fico feliz q me ajudada tenha valido alguma coisa precisar estamos ai
M
maaelphd1 like
usando o Notepad ++ consigo ver qual encodings que esta salvo arquivo!
J
JeanJavaMan
Realmente o Notepad ++ quebra um galho
D
damiaoFS
Tava procurando a função para pular uma linha no codigo java. então encontrei aqui deu supe certo , agradeço foi muito útil, obrigado…