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>>>>
public String codLoja() throws IOException, InterruptedException {
String[] separa = new String[10000];
// cria um arquivo bat
FileWriter createArq = new FileWriter("C:\\CMDcodLoja.bat");
// classe para escrever no arquivo.
PrintWriter writeArq = new PrintWriter(createArq);
writeArq.printf("cd\\"); // escreve CD\
writeArq.printf("%n"); // Da Enter
writeArq.printf("REG EXPORT " + "\"HKLM\\SOFTWARE\\LOJAD7\"" + " codLoja.reg"); // comando para copiar a chave
createArq.close();
Process pro = Runtime.getRuntime().exec("cmd.exe /c C:\\CMDcodLoja.bat"); // Executar o bat
pro.waitFor();
try {
FileReader lerReg = new FileReader("C:\\codLoja.reg");
BufferedReader arqRead = new BufferedReader(lerReg);
String line = arqRead.readLine();
int i = 0;
while(line != null){
separa[i] = line;
line = arqRead.readLine();
i++;
}
FileWriter createReg = new FileWriter("C:\\codLoja.txt");
PrintWriter printArq = new PrintWriter(createReg);
i = 0;
while(separa[i] != null){
printArq.printf(separa[i]);
printArq.printf("%n");
i++;
}
printArq.close();
} catch (IOException e) {
e.printStackTrace();
}
File file1 = new File("C:\\codLoja.reg");
file1.delete();
File file2 = new File("C:\\CMDcodLoja.bat");
file2.delete();
System.exit(0);
return "";
}
1 curtida
Já tentou usar o println ao invés de usar o printf?
1 curtida
Vc pode usar a Classe BufferedWrite para escrever no arquivo ele tem um método que pula uma linha é o método é newLine()
ex:
FileWriter createArq = new FileWriter("C:\\CMDcodLoja.bat");
BufferedWrite escrever = new BufferedWrite(createArq);
escreve.write("Texto parte 1");
//pula uma linha
escrever.newLine();
escrever.write("Texto parte 2");
escrever.flush();
escrever.close();
1 curtida
tentei e também não foi =/
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!
FileWriter createReg = new FileWriter("C:\\codLoja.txt");
PrintWriter printArq = new PrintWriter(createReg);
i = 0;
while(separa[i] != null){
printArq.printf(separa[i]);
printArq.printf("%n");
i++;
}
Nessa parque que eu escrevo no txt…
Pior que quando eu escreve o *.bat ele pula linha certinho, isso que não entendo.
Só por curiosidade… O editor de texto que você tá usando tá com a opção de quebra de linha automática?
Não estava, mas ativei a quebra de linha e mesmo assim não foi!
Eu acabei de fazer aqui e funcionou normal… A única diferença é que eu coloquei o flush() depois do close().
2 curtidas
Mas vc tá usando a Classe q eu te falei?
Usei sim Jean…
FileWriter createReg = new FileWriter("C:\\codLoja.txt");
BufferedWriter printArq = new BufferedWriter(createReg);
i = 0;
while(separa[i] != null){
printArq.write(separa[i]);
printArq.newLine();
i++;
}
printArq.flush();
printArq.close();
cara, ta estranho isso ai em, é mesmo assim não funcionou?
muito estranho Galera, assim ele foi!!
FileWriter createReg = new FileWriter("C:\\codLoja.txt");
BufferedWriter printArq = new BufferedWriter(createReg);
printArq.write("TESTE1");
printArq.newLine();
printArq.write("TESTE2");
printArq.newLine();
printArq.write("TESTE3");
printArq.flush();
printArq.close();
eu só tirei o While
i = 0;
while(separa[i] != null){
printArq.write(separa[i]);
printArq.newLine();
i++;
}
Tenta fazer o seguinte no while vc acrescenta isto aqui:
i = 0;
while(separa[i] != null){
printArq.write(separa[i]);
printArq.newLine();
printArq.flush();
i++;
}
1 curtida
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!!
1 curtida
Estranho mesmo, deve ser algum code q ele ta salvando q não é compatível, encontrei este exemplo aqui:
CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder();
encoder.onMalformedInput(CodingErrorAction.REPORT);
encoder.onUnmappableCharacter(CodingErrorAction.REPORT);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("jedis.txt"),encoder));
No seu caso, acho q seria assim:
FileWriter createReg = new FileWriter("C:\\codLoja.txt");
CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder();
encoder.onMalformedInput(CodingErrorAction.REPORT);
encoder.onUnmappableCharacter(CodingErrorAction.REPORT);
BufferedWriter printArq = new BufferedWriter(createReg,encoder);
não testei ai não sei te afirmar
1 curtida
Cara é isso mesmo!!
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!
1 curtida
Fico feliz q me ajudada tenha valido alguma coisa precisar estamos ai
1 curtida
usando o Notepad ++ consigo ver qual encodings que esta salvo arquivo!
1 curtida
Realmente o Notepad ++ quebra um galho
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…