Можно ли записать в середину файла с помощью Filestream на языке C#


Хотите знать, можно ли вставить текст в середину файла с помощью FileStream в .NET/C#. если нет, есть ли другой способ сделать это? Я вижу вариант усечения и добавления, но, очевидно, это не то, что я ищу. Я предполагаю, что я мог бы открыть источник filestream, создать другой файл назначения и записать в него, как я считаю нужным, затем усечь источник и записать обратно в него из второго файла или большого буфера, или удалить источник и переименовать файл назначения в имя файла исходного кода.

Я думаю, что мой вопрос заключается в том, как это делается наиболее эффективно и безопасно.
1 3

1 ответ:

Нет-это фундаментальное ограничение большинства файловых систем.

Я бы рекомендовал подход, который вы предлагаете (выборочное копирование из исходного файла в новый файл), но затем просто переименуйте файлы, а не копируйте их обратно поверх оригинала.

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