2013-05-27 3 views
1

Мне нужно написать пустые байты или байты, которые не соответствуют допустимому символу, чтобы я мог их легко удалить позже.Как писать пустой или нулевой байт в файл?

Я работаю с большими файлами, и когда я удаляю что-то из файлов, я хочу вместо этого заменить текст пустыми байтами, а затем удалить их позже. Я могу сделать это с fseek, а затем fwrite x количество пустых байтов в файл, поэтому мне не нужно переписывать весь файл каждый раз. Проблема в том, что если я перезаписываю текст с использованием допустимого символа, тогда, когда я хочу удалить все пустое пространство из файла в конце, нет способа узнать, является ли этот символ частью файла или предназначен для «пустое пространство». Есть ли способ записать «пустые» данные в файл, а затем очистить все пустые данные файла позже?

+0

не что-то вроде 'file_put_contents ("", "путь/к/файлу")' работа? –

+0

Пустые байты не выходят. Выход с нулевым байтом. Вы пишете их, как обычно. –

+0

Байт - это обычные номера. Вам необходимо создать формат файла, который может однозначно кодировать эту информацию. Удачи. – SLaks

ответ

1

Использовать нулевые байты (\0). Они часто используются в качестве ограничителей строк, поэтому в зависимости от того, как вы читаете полученный файл, вы получите текст только до первого нулевого байта, поэтому будьте осторожны. Строковые функции в PHP ноль-осведомлены, поэтому вы сможете манипулировать этими строками.

fwrite($h, "\0"); 

Если вам нужно написать несколько аннулирует:

fwrite($h, str_repeat("\0", $number)); 
Смежные вопросы