[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление части данных из файла
Invis1ble
Что-то нигде не могу найти реализации подобной задачи....
Есть большой файл, нужно удалить часть данных из его середины. Считывать целиком с помощью file(), менять нужную строку и записывать опять весь файл по новой как-то не красиво и медлительно... Вот ориентировочный код:
$fh = fopen($filename, 'r+b') or die('Could not open data file.');
fseek($fh, $offset, SEEK_SET);
// как здесь удалить допустим 3 байта?
fclose($fh) or die('Could not close data file.');

Вообще реально такое проделать?



Спустя 18 минут, 8 секунд (6.01.2011 - 20:25) Basili4 написал(а):
Invis1ble
2 пути.

1.
- читаем файл до тех байт которые не нужны пишем что прочитали в другой файл
- пропускаем те самые байты которые не нужны.
- читаем пишем все остальное

2. переходим на то место от куда начинаются не нужные байты. читаем все до конца файла пропуская не нужные байты пишем все что начитали в то место где стоим.




Спустя 9 минут, 24 секунды (6.01.2011 - 20:35) Invis1ble написал(а):
Basili4
я примерно эти пути и подразумевал, когда писал
Цитата
как-то не красиво и медлительно
Не получится ли у меня "говнокод" при реализации подобных алгоритмов?
Неужели никак нельзя просто удалить ненужные байты без подобных танцев?

Спустя 1 минута, 43 секунды (6.01.2011 - 20:36) Basili4 написал(а):
Invis1ble
2 путь по моему не столь говнист. Если найдешь иной путь отпишись.

Спустя 4 минуты, 26 секунд (6.01.2011 - 20:41) Invis1ble написал(а):
Basili4
Цитата
2 путь по моему не столь говнист

согласен, но тут есть нюанс - когда я запишу нужную часть файла, идущую после ненужных байтов, поверх старых байтов - получится в конце файла несколько ненужных старых байтов )

Спустя 6 минут, 3 секунды (6.01.2011 - 20:47) Invis1ble написал(а):
Basili4
впрочем, потом усечение можно сделать.... Но все равно, хотелось бы найти более красивое решение


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.