Хранение данных в текстовом файле в определенном формате - PullRequest
2 голосов
/ 11 апреля 2009

мой вопрос связан с моим предыдущим вопросом ( Как отобразить данные из текстового файла в определенном формате ).

Мне было интересно, возможно ли, во-первых, сохранить данные в текстовом файле в определенном формате, а не сохранять их сначала, а затем получить их снова и отобразить в определенном формате?

например. вместо того, чтобы хранить данные в текстовом файле, как это

Jessica 
Walking
20 minutes
Matthew
Run 
10 minutes

Я хотел сохранить его в текстовом файле в этом формате

Jessica   Walking    20 minutes
Matthew   Run        10 minutes 

Ответы [ 4 ]

3 голосов
/ 11 апреля 2009

Относительно вашего комментария к ответу аделя:

Спасибо adeel825, однако я не знаю, куда поместить "\ t" .. пока я использую этот метод: new PrintStream (fout) .println (name); новый PrintStream (fout) .println (упражнение); новый PrintStream (fout) .println ("10 минут");

Во-первых, не звоните "new PrintStream(fout)" каждый раз, когда вы что-то печатаете. Сделайте это:

PrintStream ps = new PrintStream(fout);
ps.print(name);
ps.print('\t');
ps.print(exercise);
ps.print('\t');
ps.print(time);
ps.println();

Или просто:

PrintStream ps = new PrintStream(fout);
ps.println(name + '\t' + exercise + '\t' + time);

Редактировать

В ответ на ваш комментарий:

еще один вопрос ... некоторые из названий слишком длинные и требуют дополнительной вкладки .. Я поставил ps.print ('\ t', '\ t'); но, похоже, не работает ..

Если это проблема, звучит так, будто вы пытаетесь сохранить их так, как вы хотите их отобразить. Я предполагал, что вы пытаетесь хранить их так, чтобы их было легко проанализировать программно. Если вы хотите сохранить их в столбцах, я бы предложил заполнять их пробелами, а не табуляцией.

Если вы знаете, что все столбцы будут иметь ширину, скажем, не более 30 символов, вы можете сделать что-то подобное с помощью printf:

ps.printf("%30s%30s%30s%n", name, exercise, time);

Этот синтаксис может выглядеть довольно византийским, если вы к нему не привыкли. Обычно каждый "% 30s" означает заполнение строкового аргумента так, чтобы его ширина составляла не менее 30 символов. Ваш результат не будет выглядеть правильно, если любое из значений будет 30 или более символов в ширину. Если вы не можете знать заранее, вам придется пройтись по значениям в каждом столбце, чтобы определить их ширину.

1 голос
/ 11 апреля 2009

Нет проблем с хранением данных таким способом. Все, что вам нужно сделать, это записать значения и разделить их символом табуляции "\ t"

0 голосов
/ 11 апреля 2009

Если вы хотите записывать записи фиксированной длины, вы можете использовать метод String. [Format] [1]

ps.println(String.format("%20s%20s%20s",name,exercise,time))

Это создаст таблицу с 20 символами в каждом поле. Вы можете прочитать о синтаксисе здесь

[1]: http://java.sun.com/javase/6/docs/api/java/lang/String.html#format(java.lang.String, java.lang.Object ...)

0 голосов
/ 11 апреля 2009

Вам необходимо «кодировать» ваше форматирование. Лучший способ сделать это - заключить код доступа к файлу и создать что-то вроде:

OpenFile()
CreateEntry(name, type, time)
...