Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
__Katya__
1 / 1 / 0
Регистрация: 26.06.2014
Сообщений: 18
1

Добавить файл к существующему потоку FileStream

28.06.2014, 17:25. Просмотров 758. Ответов 10
Метки нет (Все метки)

Приветствую))
Подскажите, пожалуйста, как добавить файл к существующему потоку FileStream (который уже содержит некоторое количество файлов)

Я думаю, что нужно использовать Seek, но не могу разобраться в этом, так что, если правильно именно это применять, то объясните простым языком, как это работает, а лучше с примером.
MSDN ссылки на Seek не присылайте, уже читала.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2014, 17:25
Ответы с готовыми решениями:

Как указать потоку, чтобы он загружал файл из той папки, в который находится исходный файл?
Как указать потоку, чтобы он загружал файл из той папки, в который находиться...

FileStream.Close(), FileStream.Dispose() - что использовать?
Здравствуйте! Использую в программе объект типа FileStream. Когда он...

Filestream. Не происходит запись в файл
Изначально строки из файла считываются и выводятся на консоль. После я...

Как передать файл по ssl потоку
Добрый день. Подскажите такой вопрос: как передать файл по ssl потоку в C#?...

Чтение и запись массива double в файл с FileStream
Мне нужно записать в файл массив double, затем считать его из файла с помощью...

10
SmashDream
40 / 32 / 24
Регистрация: 09.06.2012
Сообщений: 144
30.06.2014, 12:37 2
Не очень понял, на счет добавить файл к существующему потоку FileStream. На сколько мне известно один файловый поток может обрабатывать один файл. Асинхронное чтение и асинхронная запись позволяются не синхронно читать и писать один файл, соответственно для обработки нескольких файлов нужно несколько файловых потоков. Ну и пример синхронного чтения:
C#
1
2
3
4
5
6
7
8
9
10
            FileStream fs = new FileStream(Application.StartupPath + "//файл тут какой-то вот.txt", FileMode.Open, FileAccess.Read);
 
            byte[] ReadedBytes = new byte[2];
 
            fs.Seek(0, SeekOrigin.Begin);   //одно 
            fs.Position = 0;                //    и тоже
 
            fs.Read(ReadedBytes, 0, ReadedBytes.Length);
 
            fs.Close();
0
__Katya__
1 / 1 / 0
Регистрация: 26.06.2014
Сообщений: 18
30.06.2014, 12:53  [ТС] 3
Да, потому что кое-кто (не будем указывать пальцами <--) не может нормально формулировать вопросы, и вообще шарит в C# не так хорошо, как варит борщи.

Сейчас попробую:
Есть файл, в котором в байтовом виде уже содержится некоторое количество файлов.
Структура такая: количество файлов, имя файла1, имя файла2,...,имя файлаN, количество байтов в файле1, ...количество байтов в файлеN, содержимое ф1,....содержимое фN.
А теперь нужно в этот вот существующий и заполненный файл добавить еще файл(файлы).
Вот если бы мне нужно было бы просто добавить содержимое в конец, то я бы юзала FileMode.Append, но помимо этого мне нужно как-то увеличить количество файлов, добавить имя и размер, т.е. мне нужно как-то переводить курсор в определенные позиции и записывать инфу.

Так вот как это сделать? Я опять же думаю, что нужен Seek, но мне нужен пример с комментариями.
Помогите, кто может. Кто может, помогите.
0
D_Sergeevich
26 / 26 / 10
Регистрация: 06.02.2014
Сообщений: 156
30.06.2014, 12:59 4
Цитата Сообщение от __Katya__ Посмотреть сообщение
А теперь нужно в этот вот существующий и заполненный файл добавить еще файл(файлы).
Вот если бы мне нужно было бы просто добавить содержимое в конец, то я бы юзала FileMode.Append, но помимо этого мне нужно как-то увеличить количество файлов, добавить имя и размер, т.е. мне нужно как-то переводить курсор в определенные позиции и записывать инфу.
А что за велосипед вы пытаетесь создать? может стоит по другому продумать реализацию?
1
__Katya__
1 / 1 / 0
Регистрация: 26.06.2014
Сообщений: 18
30.06.2014, 13:06  [ТС] 5
Да как же по другому?
Мне же эти файлы еще извлекать надо. Я так, на всякий случай.
0
Spawn
972 / 870 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
30.06.2014, 13:09 6
Seek Вам поможет только если изначальные сдвиги (offset) будут известны, а исходя из Вашего описания, они Вам неизвестны. В текущей постановке решение 1 - перезапись всего файла.
1
__Katya__
1 / 1 / 0
Регистрация: 26.06.2014
Сообщений: 18
30.06.2014, 13:16  [ТС] 7
О, ну тк это же гениально!!
Можно извлечь инфу из файлового контейнера в разные массивы, в которых будет место и для новых файлов, а потом снова записать.
Пойду думать реализацию. Спасибо! +1
0
SmashDream
40 / 32 / 24
Регистрация: 09.06.2012
Сообщений: 144
30.06.2014, 14:21 8
__Katya__ Подразумевалось, что любому алгоритму нужно знать, сколько и где читать, в вашем случае:
количество файлов, имя файла1, имя файла2,...,имя файлаN, количество байтов в файле1
Неизвестна длина имён файлов, к тому же, невозможно добавление/изменение файла без почти полной перезаписи файла-контейнера. Обычно эту проблему решают разбиением всего набора байтов на блоки, в принципе любой серьёзный контейнер так и работает. Имхо это слишком сложно на данном этапе, лучше решить неизвестную проблему как-то иначе =)
0
__Katya__
1 / 1 / 0
Регистрация: 26.06.2014
Сообщений: 18
30.06.2014, 14:27  [ТС] 9
Я вот этим - "\n" все разбила, так что понять где имена и сколько их и все остальное я могу.
Можно как-то это применить для моей задачи?
0
Spawn
972 / 870 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
30.06.2014, 14:29 10
__Katya__, как уже и решили выше, чтением всего файла, редактированием и последующей перезаписью.
0
__Katya__
1 / 1 / 0
Регистрация: 26.06.2014
Сообщений: 18
30.06.2014, 14:41  [ТС] 11
Ага, я просто подумала, что есть другой выход, но..."Выхода нет" *поёт*
Спасибо всем за помощь :3
0
30.06.2014, 14:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2014, 14:41

FileStream или чтение и запись в один и тот же файл
Из темы уже можно было понять суть проблемы - есть файл и например из центра...

Почему после закрытия конструкции using с FileStream, файл набирает несколько лишних кб?
Всем привет! Вопрос такой, заметил, что если словить брейк например, на return...

Как создать файл с расширением txt и добавить в файл определенного количества строк заданным пользователем?
C# Как создать файл с расширением txt и добавить в файл определенного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru