The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"вставка данных в файл"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"вставка данных в файл"  +/
Сообщение от ghost_in_machine email on 28-Дек-09, 05:02 
Здравствуйте!
С Рождеством/Новым Годом!
У меня вопрос: как правильно вписать данные в середину файла под Linux на С? Первый приходящий в голову способ – через буффер физически данные перекопировать со сдвигом на размер вставки. Но, при таком способе файл надо прочитать и записать от места вставки и до EOF (что может быть очень долго).  В то же время на ХДД он физически лежит по фрагментам где придеться. Тоесть не надо его переписывать, надо лишь «подвязвть» фрагмент пустого места как середину файла. Как это сделать (на некий перерасход места на ХДД можно забить ради скорости, проводя перезапись фрагментированного файла в цельный в самом конце работы с ним )?
Спасибо!
Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "вставка данных в файл"  +/
Сообщение от Pahanivo email(ok) on 28-Дек-09, 09:38 
>[оверквотинг удален]
>на С? Первый приходящий в голову способ – через буффер физически
>данные перекопировать со сдвигом на размер вставки. Но, при таком способе
>файл надо прочитать и записать от места вставки и до EOF
>(что может быть очень долго).  В то же время на
>ХДД он физически лежит по фрагментам где придеться. Тоесть не надо
>его переписывать, надо лишь «подвязвть» фрагмент пустого места как середину файла.
>Как это сделать (на некий перерасход места на ХДД можно забить
>ради скорости, проводя перезапись фрагментированного файла в цельный в самом конце
>работы с ним )?
>Спасибо!

файл все равно придется полность переписать

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "вставка данных в файл"  +/
Сообщение от ghost_in_machine email on 28-Дек-09, 21:32 
>файл все равно придется полность переписать

спасибо за ответ. Я не совскм понял что Ваше утверждение должно значить, но если Вы о финальной перезапись фрагментированного файла, то тут нет проблем т.к. общая работа больше не зависит (мало зависит) от количества и места вставок.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "вставка данных в файл"  +/
Сообщение от аноним on 28-Дек-09, 22:58 
> Как это сделать

Никак. Только читать файл целиком.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "вставка данных в файл"  +/
Сообщение от ghostinmachine email on 29-Дек-09, 00:56 
>> Как это сделать
>
>Никак. Только читать файл целиком.

Спастбо за ответ. Так что получаеться, надо разрабатывать свою ФС и форматить нею файл что бы запись в его конец означала запись в его середину??! И никакого нормального способа это сделать средствами ОС нет???


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "вставка данных в файл"  +/
Сообщение от Pahanivo email(ok) on 29-Дек-09, 14:11 
>>> Как это сделать
>>
>>Никак. Только читать файл целиком.
>
>Спастбо за ответ. Так что получаеться, надо разрабатывать свою ФС и форматить
>нею файл что бы запись в его конец означала запись в
>его середину??! И никакого нормального способа это сделать средствами ОС нет???
>

ты че за дрянь куришь?
ознакомся с понятием файла и тем как он распологается в файловой системе

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "вставка данных в файл"  +/
Сообщение от аноним on 29-Дек-09, 15:35 
>Спастбо за ответ. Так что получаеться, надо разрабатывать свою ФС и форматить
>нею файл что бы запись в его конец означала запись в
>его середину??!

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

>И никакого нормального способа это сделать средствами ОС нет???

Разумеется, нет.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "вставка данных в файл"  +/
Сообщение от jd (??) on 29-Дек-09, 14:44 
В POSIX системе такое сделать нельзя. Даже если свою ФС разработать - подобной операции не предусмотрено, следовательно придётся ещё свои системные вызовы добавлять. То есть, нестандартной будет не только ФС (драйвер для неё), но и каждая программа, использующая данную фичу, потребует поддержки этого нестандартного решения. Не думаю, что всё это хоть как-то оправдано.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "вставка данных в файл"  +/
Сообщение от ghost_in_machine email on 30-Дек-09, 00:25 
Всем спастбо за ответы.  Говоря о ФС я имел ввиду скорее некую форматировку самого файла, в простейшем случае указывать offset на следующий блок там через каждые N Кб данных  (кто ж решиться на такой титанический труд как собрать свою ФС), вероятно надо было взять ФС в кавычки. Тем не менее идею я понял – POSIX такого не предусматривает (Pahanivo, ну неужели это нельзя было сказать так просто (и формально!) без выпендрёжа и размышлений о том, что я курю?). Всем спасибо, тема закрыта.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "вставка данных в файл"  +/
Сообщение от anonymous (??) on 30-Дек-09, 02:51 
>Всем спастбо за ответы.  Говоря о ФС я имел ввиду скорее
>некую форматировку самого файла, в простейшем случае указывать offset на следующий
>блок там через каждые N Кб данных  (кто ж решиться
>на такой титанический труд как собрать свою ФС), вероятно надо было
>взять ФС в кавычки. Тем не менее идею я понял –
>POSIX такого не предусматривает (Pahanivo, ну неужели это нельзя было сказать
>так просто (и формально!) без выпендрёжа и размышлений о том, что
>я курю?). Всем спасибо, тема закрыта.

фактически вы хотите, чтобы файлы были не бесструктурные.  в files-11 такое есть, но не уверен, что вам оно надо :-)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "вставка данных в файл"  +/
Сообщение от ghost_in_machine email on 30-Дек-09, 03:37 

>фактически вы хотите, чтобы файлы были не бесструктурные.  в files-11 такое
>есть, но не уверен, что вам оно надо :-)

Ну с поправкой на масштаб (мне то надо всего 1 функция – быстрая запись в середину файла) то идея та...  Спасибо, было инетерсно ознакомиться с files11, правда то что мне было нужно уже озвучил товарищ dj.
Хотя странно как-то  что такая не лишняя опция осталась без внимания разрабочков ФС.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру