В этом участке когда почему то пишет, поток недоступен для чтения. С начало я подумал, что либо я рано закрываю поток либо его вообще не надо закрывать но не то не другое не помогло.
георгий воронько, На второй строке вы пытаетесь писать в поток входного файла (который только что открыли только для чтения).
Вы определитесь, либо вы пишете, либо читаете, если хотите одновременно, можно поставить FileAccess.ReadWrite, но в целом, если вы скажете, чего именно добиться хотите, будет проще.
георгий воронько, Ну и делайте в этой последовательности.
Кстати, вам для дела или это задание которое надо выполнить извращённым способом?
Потому что, если для дела, то вторая задача решается при помощи File.Copy.
Если же вы изучаете двусторонний доступ в файл, тогда да.
Тут ещё есть вопрос, требуется ли записать поверх старого файла, либо ДОПИСАТЬ.
При двустороннем доступе, вам необходимо будет работать без reader и writer - напрямую с потоком, и не со строками, а с байтами, и вручную устанавливать позицию "курсора" (как бы считывающей головки) внутри данных файла. Плюс, при "дописывании" необходимо будет устанавливать новую длину файла (SetLength)