Armazenar dados em txt arquivo no formato específico
-
09-09-2019 - |
Pergunta
minha pergunta está relacionada à minha pergunta anterior ( como exibir dados de arquivo txt em formato específico).
Eu queria saber se é possível em primeiro lugar, para armazenar dados em txt arquivo no formato específico em vez de armazená-lo em primeiro lugar e, em seguida, retreived-lo novamente e exibi-lo em formato específico?
por exemplo. em vez de armazenar dados no txt arquivo como este
Jessica Walking 20 minutes Matthew Run 10 minutes
Eu queria armazená-lo em txt arquivo nesse formato
Jessica Walking 20 minutes Matthew Run 10 minutes
Solução
No que diz respeito o seu comentário para a resposta de adeel:
Graças adeel825, no entanto eu não sei onde colocar o "\ t" .. até agora eu usar este método: nova PrintStream (fout) .println (nome); nova PrintStream (fout) .println (exercício); nova PrintStream (fout) .println ( "10 minutos");
Em primeiro lugar, não chame "new PrintStream(fout)
" toda vez que você imprimir algo. Faça o seguinte:
PrintStream ps = new PrintStream(fout);
ps.print(name);
ps.print('\t');
ps.print(exercise);
ps.print('\t');
ps.print(time);
ps.println();
Ou simplesmente:
PrintStream ps = new PrintStream(fout);
ps.println(name + '\t' + exercise + '\t' + time);
Editar
Em resposta ao seu comentário:
mais uma pergunta ... alguns dos nomes são muito longos e que exige mais tab..I ter colocado ps.print ( '\ t', '\ t'); mas não parece trabalhar ..
Se este é um problema, parece que você está tentando para armazená-los da maneira que você quiser exibi-los. Eu tinha assumido que estava a tentar armazená-los de uma maneira que seria fácil de analisar de forma programática. Se você quiser guardá-los exibidos em colunas, eu sugiro preenchimento com espaços em vez de separadores.
Se você sabe que todas as colunas vão ser menos do que, digamos, 30 caracteres de largura, você poderia fazer algo assim com printf:
ps.printf("%30s%30s%30s%n", name, exercise, time);
Essa sintaxe pode parecer bastante bizantino, se você não está acostumado com isso .. basiclly cada "% 30s" significa pad o argumento de cadeia para que ele seja pelo menos 30 caracteres de largura. Seu resultado não vai olhar direito se algum dos valores são 30 ou mais caracteres de largura. Se você não pode saber antes do tempo, você vai ter que percorrer os valores em cada coluna para determinar a largura das colunas precisam ser.
Outras dicas
Não há nenhum problema com o armazenamento de dados desta forma. Tudo que você precisa fazer é escrever os valores e delimitá-los com um caractere de tabulação "\ t"
Você precisa "handcode" a sua formatação. A melhor maneira de fazer isso seria para embrulhar o seu em algum lugar code-acessar o arquivo, e criar algo como:
OpenFile()
CreateEntry(name, type, time)
Se você quiser registros de gravação de comprimento fixo você pode usar a cadeia. [Formato] [1] método
ps.println(String.format("%20s%20s%20s",name,exercise,time))
Isto irá criar uma tabela com 20 caracteres em cada campo. Você pode readup sobre a sintaxe aqui
[1]: http://java.sun.com/javase/6/docs/api/java/lang/String.html#format (java.lang.String , java.lang.Object ...)