Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вставка строки в файл 
:(
    Опции темы
TicTak
  Дата 20.9.2005, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 2.3.2005

Репутация: нет
Всего: 1



Есть текстовый файл, и в него в определённых местах нужно вставлять строчки (ну что-то типа разделителя, например -----------------------------------). Так вот каким образом это лучше осуществить. Я понимаю, что вопрос детский, но что-то додуматся не могу (сам дитё ещё в програмировании), помогите пож-ста добрым словом и полезным советом. Спасибо
PM   Вверх
Akina
Дата 20.9.2005, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Код
Dim Temp1$, Temp2$ As String Variables
Open OldFile For Input As TextFile
Open NewFile For Output As TextFile
Temp1$=ReadLineFromFile
While Not EndOfFile
   Temp2$=ReadLineFromFile
   PrintLineToFile Temp1$
   If NeedDelimiter(Temp1$,Temp2$) Then
      PrintLineToFile Delimiter
   End If
   Temp1$=Temp2$
End While
PrintLineToFile Temp2$
Close Files
End Program



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Spawn™Production®
Дата 20.9.2005, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


Профиль
Группа: Участник
Сообщений: 398
Регистрация: 12.4.2005
Где: Зеленоград

Репутация: 1
Всего: 12



Сначала полностью считываем файл, а затем простой командой Replace добавляем разделители.
Например файл (C:\1.txt) с таким содержанием:
Цитата
Всем привет
Доброго времени суток
Как дела ?
Какая у Вас погода нынче ?

Код:
Код
Dim path as String = "C:\" ' Путь к файлу.
Dim filename as String = "1.txt" ' Имя файла.
Dim buffer as String ' Переменная, в которую считаем содержимое файла.
Dim File As New System.IO.StreamReader(path & filename, System.Text.Encoding.Default, True) 'Открываем необходимый файл.
buffer = File.ReadToEnd ' Полностью считываем файл в переменную.
buffer = Replace(buffer, chr(13) & chr(10), chr(13) & chr(10) & "<------------------------>" & chr(13) & chr(10))
File.Close() 'Закрываем файл. Работа с ним окончена
Dim NewFile As New System.IO.StreamWriter(path & filename, False, System.Text.Encoding.Default) 'Средство для записи в файл.
NewFile.Write(buffer) ' Записываем наши изменённые данные в файл.
NewFile.Close() ' Закрываем файл.


Это сообщение отредактировал(а) Spawn™Production® - 20.9.2005, 12:28


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Akina
Дата 20.9.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Spawn™Production®
При условии что файл - не лог гигабайтный... а то придется кластеризацию чтения делать.

Но что так как ты говоришь быстрее - адназначна.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
TicTak
Дата 20.9.2005, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 2.3.2005

Репутация: нет
Всего: 1



Идею понял, спасибо. Только подскажите плз, коды каких симолов имеют значения 10 и 13, а то найти нигде не могу.
PM   Вверх
Spawn™Production®
Дата 20.9.2005, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


Профиль
Группа: Участник
Сообщений: 398
Регистрация: 12.4.2005
Где: Зеленоград

Репутация: 1
Всего: 12



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

TicTak, 10 - возврат каретки, 13 - Enter

Это сообщение отредактировал(а) Spawn™Production® - 20.9.2005, 14:42


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Akina
Дата 20.9.2005, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



10 - LF - LineFeed - Перевод курсора (в первую позицию текущей строки)
13 - CR - Carriage Return - Возврат каретки (переход на строку ниже)

Вместе (только сперва 13, потом 10 - CrLf) - переход на первую позицию следующей строки (когда-то было в терминалах). В ДОС-текстах - начать новую строку.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Дрон
Дата 21.9.2005, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



Кстати, рекомендую для больших (примерно больше, чем 100 символов) строк (текстов) пользоваться StringBuilder, а не String.

Это сообщение отредактировал(а) Дрон - 21.9.2005, 18:05


--------------------
Да. Именно так.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.