Помогите с FileStream
От: Beegor  
Дата: 28.12.06 11:55
Оценка:
Приветствую!
Возник вопрос на который нигде не могу найти ответ.
Можно ли при записи в файл (например BinarzWrite ром), сместить последующий контент?
Тоесть в файле допустим есть:
A B C (байты)
нужно в середину впихнуть D чтобы выглядело так:
A B D C
Помогите, очень нужно!
Re: Помогите с FileStream
От: Reisende  
Дата: 28.12.06 12:11
Оценка: 2 (1)
Здравствуйте, Beegor, Вы писали:

B>Приветствую!

B>Возник вопрос на который нигде не могу найти ответ.
B>Можно ли при записи в файл (например BinarzWrite ром), сместить последующий контент?
B>Тоесть в файле допустим есть:
B>A B C (байты)
B>нужно в середину впихнуть D чтобы выглядело так:
B>A B D C
B>Помогите, очень нужно!

Можно через промежуточный временный файл:
1. Читаем при помощи ридера исходный файл кусками и пишем их во временный файл райтером;
2. По достижению нужного места пишем райтером необходимую вставку;
3. Продолжаем пункт 1 до конца исходного файла.
Re[2]: Помогите с FileStream
От: Beegor  
Дата: 28.12.06 12:15
Оценка:
Здравствуйте, Reisende, Вы писали:

R>Здравствуйте, Beegor, Вы писали:


B>>Приветствую!

B>>Возник вопрос на который нигде не могу найти ответ.
B>>Можно ли при записи в файл (например BinarzWrite ром), сместить последующий контент?
B>>Тоесть в файле допустим есть:
B>>A B C (байты)
B>>нужно в середину впихнуть D чтобы выглядело так:
B>>A B D C
B>>Помогите, очень нужно!

R>Можно через промежуточный временный файл:

R>1. Читаем при помощи ридера исходный файл кусками и пишем их во временный файл райтером;
R>2. По достижению нужного места пишем райтером необходимую вставку;
R>3. Продолжаем пункт 1 до конца исходного файла.
А без промежуточного файла никак?
Re[3]: Помогите с FileStream
От: Reisende  
Дата: 28.12.06 12:28
Оценка:
Здравствуйте, Beegor, Вы писали:

B>Здравствуйте, Reisende, Вы писали:


R>>Здравствуйте, Beegor, Вы писали:


B>>>Можно ли при записи в файл (например BinarzWrite ром), сместить последующий контент?


R>>Можно через промежуточный временный файл:


B>А без промежуточного файла никак?


Можно!
С промежуточным буфером
Смещение содержимого файла при "вставке" в любом случае подразумевает переписывание оставшегося куска, если конечно не работать напрямую с кластерами диска.
Re: Помогите с FileStream
От: Sinclair Россия http://corp.ingrammicro.com/Solutions/Cloud.aspx
Дата: 28.12.06 12:43
Оценка: 2 (1)
Здравствуйте, Beegor, Вы писали:

B>Приветствую!

B>Возник вопрос на который нигде не могу найти ответ.
B>Можно ли при записи в файл (например BinarzWrite ром), сместить последующий контент?
Нет, нельзя. Проблема не в FileStream, а в файловой системе. API Win32 не предусматривают функций по детальному управлению размещением файла.
Теоретически, можно было бы поиграть напрямую с драйвером, но это
а) сложно
б) непереносимо (между FAT и NTFS есть разница, даже если научиться правильно обрабатывать разные размеры allocation unit)
в) вызовет проблемы с безопасностью в управляемой среде
http://rsdn.org/File/5743/rsdn@home2.gif 1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
http://rsdn.org/File/5743/rsdnaddict.GIF
Re[2]: Помогите с FileStream
От: Beegor  
Дата: 28.12.06 12:55
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Beegor, Вы писали:


B>>Приветствую!

B>>Возник вопрос на который нигде не могу найти ответ.
B>>Можно ли при записи в файл (например BinarzWrite ром), сместить последующий контент?
S>Нет, нельзя. Проблема не в FileStream, а в файловой системе. API Win32 не предусматривают функций по детальному управлению размещением файла.
S>Теоретически, можно было бы поиграть напрямую с драйвером, но это
S>а) сложно
S>б) непереносимо (между FAT и NTFS есть разница, даже если научиться правильно обрабатывать разные размеры allocation unit)
S>в) вызовет проблемы с безопасностью в управляемой среде
Спасибо 8-) Развеяли мечты
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.