Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Вставка строки в файл


Автор: TicTak 20.9.2005, 12:01
Есть текстовый файл, и в него в определённых местах нужно вставлять строчки (ну что-то типа разделителя, например -----------------------------------). Так вот каким образом это лучше осуществить. Я понимаю, что вопрос детский, но что-то додуматся не могу (сам дитё ещё в програмировании), помогите пож-ста добрым словом и полезным советом. Спасибо

Автор: Akina 20.9.2005, 12:11
Код
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

Автор: Spawn™Production® 20.9.2005, 12:27
Сначала полностью считываем файл, а затем простой командой 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() ' Закрываем файл.

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

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

Автор: TicTak 20.9.2005, 14:30
Идею понял, спасибо. Только подскажите плз, коды каких симолов имеют значения 10 и 13, а то найти нигде не могу.

Автор: Spawn™Production® 20.9.2005, 14:42
Akina, ну это естественно, при таких размерах мой метод - труба, но в таких случаях в простом текстовом файле держать информацию я бы не советовал...

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

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

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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)