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 
Foi útil?

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 ...)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top