FileStream Добавить данные вверху - PullRequest
1 голос
/ 30 июня 2009

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

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

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

Нечто существующее здесь

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

Ответы [ 3 ]

2 голосов
/ 30 июня 2009

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

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

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

1 голос
/ 30 июня 2009

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

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

0 голосов
/ 06 октября 2009

Да

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

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

sw.BaseStream.Seek (0, 0);

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

sw.close ()

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

...