FileStream Добавить данные вверху

Я работаю над утилитой.

Я хочу добавить данные вверху файла, но они перезаписываются, а не добавляются.

Например: рассмотрим файл file.txt:

Something existing here

Теперь я хочу добавить "Нечто более существующее здесь" до текущей строки. Есть ли способ, которым я могу обойтись без использования 2 FileStreams?

 cbrcoder30 июн. 2009 г., 08:26
Серебрус, я выразился так просто, как мог. Я нашел ответ от Джона. Благодарю.
 Cerebrus30 июн. 2009 г., 08:23
Покажите нам свой код!

Ответы на вопрос(3)

да

FileStream fs = new FileStream (path2, FileMode.OpenOrCreate, FileAccess.ReadWrite);

sw = новый StreamWriter (фс);

sw.BaseStream.Seek (0, 0);

sw.WriteLine (& quot; написать новый текст & quot;);

sw.close ()

Этот метод перезапишет любые существующие данные, сродни вставке и замене.

Решение Вопроса

Нет. Файловые системы в основном не поддерживают вставку данных в файл - вы либо добавляете в конец файла, либо перезаписываете существующие данные. По крайней мере, я не знаю ни одной файловой системы, котораяdoes поддерживают это, и стандартные API не делают.

Чтобы изменить файл любым другим способом, лучше всего написать новый файл, читая из старого файла, где вам нужно (в вашем случае после написания предыдущего текста). Затем удалите старый файл и переименуйте новый файл, чтобы иметь то же имя, что и старый файл.

(Более безопасная версия этого включает переименование старого файла, затем переименование нового файла, затем удаление старого файла - это позволяет восстановить, если что-то пойдет не так.)

 cbrcoder30 июн. 2009 г., 08:25
Спасибо Джон. Довольно странно, хотя. Спасибо, я обойду, используя 2 потока тогда.

Нет. Файлы не имеют режима вставки, как текстовые процессоры.

Извините, это не то, что вы хотите услышать, но факт.

 30 июн. 2009 г., 08:27
Ах ... Я в основном связан временем отклика и правильности с Джоном Скитом ... и я все еще проигрываю. Вот его величие.

Ваш ответ на вопрос