Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление текста в начало файла 
V
    Опции темы
Dimzet
Дата 4.6.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 4.6.2006

Репутация: нет
Всего: нет



Проблема вот в чем. В файле есть информация, мне нужно не удаляя ее, добавить в этот файл строку, причем перед текстом. то есть в начало файла, вся информация в файле записана в одну строку. Эту операцию мне придется производить многократно, поэтому, просто прочтение из файла в string, а потом записьь в файл двух переменных не подходит. Если знаете как это сделать подскажите, а то сижу над этим уже 2 й день а понять не могу. 
PM MAIL   Вверх
arilou
Дата 6.6.2006, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 7
Всего: 61



Dimzet, расскажи немного, что именно ты реализуешь? Стандартных стредств для этого нет. Все делается примерно так как ты и говоришь. 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
NURMS
Дата 23.7.2009, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



У меня тоже возникла такая проблема. В моём случае из базы генерируется файл, мегабайтов 400, и нужно в начало файла добавить одну строчку. А получиться, к примеру, сдвинуть байты на определённое количество, чтобы спереди поместить ещё одну строчку? Но вот сдвигать 400МГ думаю не очень уж разумно!! Есть ещё какие технологии для этого?
PM MAIL   Вверх
diadiavova
Дата 24.7.2009, 02:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(NURMS @  23.7.2009,  21:28 Найти цитируемый пост)
Есть ещё какие технологии для этого? 

Да вроде никаких. Если файл надо переписать единожды, то это не проблема, а если добавлять строку придётся несколько раз за сессию, то возможно есть смысл воспользоваться временным файлом для хранения данных, а когда всё будет сформированно переписать файл один раз.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
NURMS
Дата 24.7.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Цитата

Если файл надо переписать единожды, то это не проблема


Это не проблема всмысле один раз загрузить 400мб в переменную не проблема, или можно каким-то чудом сразу добавить байты в область txt файла? Мне нужно именно добавить одну строчку один раз за сессию в начало файла.
PM MAIL   Вверх
diadiavova
Дата 24.7.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Добавить в начало файла, на сколько мне известно нельзя, но что мешает создать временный файл, вписать в него нужные данные, добавить 400мб из другого файла, удалить файл источник, а временному файлу присвоить имя удалённого. Это как вариант.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
NURMS
Дата 24.7.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



И я так думал, но файл не маленький чтобы его ещё копировать, потом стирать. Можно загрузить весь файл в какой-нибудь байтовый массив (в этом файле есть какие-то символы, что VB с ними не знаком в копирует как чёрт знает что если исользовать string) потом опять вернуть туда же. Но не думаю, что хранить 400 мегабайтовый массив в памяти очень весело (:. Но другого в голову что-то не приходит.
PM MAIL   Вверх
diadiavova
Дата 24.7.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Ну во-первых, есть на свете класс System.IO.BinaryReader, и райтер аналогичный тоже имеется.
Во-вторых с его помощбю можно считывать данные небольшими блоками (метод ReadBytes) и записывать в другой файл при помощи райтера. Никаких проблем с нехваткой памяти не будет. А использование временных файлов - обычное дело.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
NURMS
Дата 24.7.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Да, с этими байтами проблем нету. Мне нужно избавиться именно от создания второго файла и желательно от "Copy - Paste". Я должен это всё дело проделать используя только этот один файл и используя как можно меньше памяти. 
А возможно как-то переадресовать начало файла на другой адрес, где находиться добавляемый текст, а оттуда уже вернуться по первоначальному адресу? Хотя на мой взгляд звучит глупо. С винчестером такие фокусы не пройдут.
PM MAIL   Вверх
NURMS
Дата 24.7.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Хм. А в VB NET есть возможность изменять байты непосредственно на жестяке?
PM MAIL   Вверх
diadiavova
Дата 24.7.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(NURMS @  24.7.2009,  14:58 Найти цитируемый пост)
Хотя на мой взгляд звучит глупо.

На мой - тоже smile 
Цитата(NURMS @  24.7.2009,  16:48 Найти цитируемый пост)
А в VB NET есть возможность изменять байты непосредственно на жестяке? 

Не думаю.
Цитата(NURMS @  24.7.2009,  14:58 Найти цитируемый пост)
Я должен это всё дело проделать используя только этот один файл и используя как можно меньше памяти. 

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


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
NURMS
Дата 24.7.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Вот и я не понимаю. Я написал через временный файл, а меня обозвали примитивно мыслящим неудачником в то время, как наши космические корабли бороздят пределы космоса. Вот теперь иди и объясни! smile 
PM MAIL   Вверх
diadiavova
Дата 24.7.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(NURMS @  24.7.2009,  18:24 Найти цитируемый пост)
Я написал через временный файл, а меня обозвали примитивно мыслящим неудачником 

Ну у тех, кто оьозвал видимо свой вариант имеется. smile Поделились бы что ли.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
NURMS
Дата 27.7.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Всё, согласились используя временный файл и буффером по 100КБ.  smile  Думаю на этом всё.
Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.