![]() |
|
Модераторы: diadiavova, gambit |
![]()
|
|
| Dimzet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 4.6.2006 Репутация: нет Всего: нет |
Проблема вот в чем. В файле есть информация, мне нужно не удаляя ее, добавить в этот файл строку, причем перед текстом. то есть в начало файла, вся информация в файле записана в одну строку. Эту операцию мне придется производить многократно, поэтому, просто прочтение из файла в string, а потом записьь в файл двух переменных не подходит. Если знаете как это сделать подскажите, а то сижу над этим уже 2 й день а понять не могу.
|
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 7 Всего: 61 |
Dimzet, расскажи немного, что именно ты реализуешь? Стандартных стредств для этого нет. Все делается примерно так как ты и говоришь.
|
|||
|
||||
| NURMS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.4.2007 Репутация: нет Всего: нет |
У меня тоже возникла такая проблема. В моём случае из базы генерируется файл, мегабайтов 400, и нужно в начало файла добавить одну строчку. А получиться, к примеру, сдвинуть байты на определённое количество, чтобы спереди поместить ещё одну строчку? Но вот сдвигать 400МГ думаю не очень уж разумно!! Есть ещё какие технологии для этого?
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Да вроде никаких. Если файл надо переписать единожды, то это не проблема, а если добавлять строку придётся несколько раз за сессию, то возможно есть смысл воспользоваться временным файлом для хранения данных, а когда всё будет сформированно переписать файл один раз. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| NURMS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.4.2007 Репутация: нет Всего: нет |
Это не проблема всмысле один раз загрузить 400мб в переменную не проблема, или можно каким-то чудом сразу добавить байты в область txt файла? Мне нужно именно добавить одну строчку один раз за сессию в начало файла. |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Добавить в начало файла, на сколько мне известно нельзя, но что мешает создать временный файл, вписать в него нужные данные, добавить 400мб из другого файла, удалить файл источник, а временному файлу присвоить имя удалённого. Это как вариант.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| NURMS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.4.2007 Репутация: нет Всего: нет |
И я так думал, но файл не маленький чтобы его ещё копировать, потом стирать. Можно загрузить весь файл в какой-нибудь байтовый массив (в этом файле есть какие-то символы, что VB с ними не знаком в копирует как чёрт знает что если исользовать string) потом опять вернуть туда же. Но не думаю, что хранить 400 мегабайтовый массив в памяти очень весело (:. Но другого в голову что-то не приходит.
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Ну во-первых, есть на свете класс System.IO.BinaryReader, и райтер аналогичный тоже имеется.
Во-вторых с его помощбю можно считывать данные небольшими блоками (метод ReadBytes) и записывать в другой файл при помощи райтера. Никаких проблем с нехваткой памяти не будет. А использование временных файлов - обычное дело. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| NURMS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.4.2007 Репутация: нет Всего: нет |
Да, с этими байтами проблем нету. Мне нужно избавиться именно от создания второго файла и желательно от "Copy - Paste". Я должен это всё дело проделать используя только этот один файл и используя как можно меньше памяти.
А возможно как-то переадресовать начало файла на другой адрес, где находиться добавляемый текст, а оттуда уже вернуться по первоначальному адресу? Хотя на мой взгляд звучит глупо. С винчестером такие фокусы не пройдут. |
|||
|
||||
| NURMS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.4.2007 Репутация: нет Всего: нет |
Хм. А в VB NET есть возможность изменять байты непосредственно на жестяке?
|
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
На мой - тоже
Не думаю.
Не очень понятно зачем. Использовать минимум памяти можно при помощи временного файла, а вот какая выгода от того, что используется только один файл, я что-то вообще не понял. Но в любом случае вряд ли это возможно. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| NURMS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.4.2007 Репутация: нет Всего: нет |
Вот и я не понимаю. Я написал через временный файл, а меня обозвали примитивно мыслящим неудачником в то время, как наши космические корабли бороздят пределы космоса. Вот теперь иди и объясни!
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Ну у тех, кто оьозвал видимо свой вариант имеется. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| NURMS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.4.2007 Репутация: нет Всего: нет |
Всё, согласились используя временный файл и буффером по 100КБ.
Спасибо! |
|||
|
||||
![]()
|
| Правила форума VB .NET | |
|
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |