Эта тема на forum.dklab.ru


Юрик: Функция fopen()
Здравствуйте, у меня возник не совсем простой вопрос..
Как известно, в качестве параметра вункции fopen() передается имя файла.
Вопрос: что будет, если значение параметра будет слишком длинным, длинней максимально возможного в данной файловой системе. Будет ли при этом error/warning? А если при этом имя содержит пробелы в конце?
В случае пробелов: поэкспериментировал, вроде отрезаются как-то...
А если имя будет 'фффффффффффф [много пробелов] ыыыы' и все, что после середины пробелов не входит в лимит длины файла в данной ОС?
Юрий Насретдинов:
fastkill:
Попробуйте - узнайте. Заодно нам расскажите.
begemotus:
Выдержка из Win32 programmer's reference:
...
Protected-mode FAT allows filenames of up to 255 characters, including the terminating null character. This is similar to the New Technology file system (NTFS) which allows filenames of up to 256 characters.
Protected-mode FAT allows paths of up to 260 characters, including the terminating null character.
...
Опять же, для ответа, есть специально обученная функция:

BOOL GetVolumeInformation(

LPCTSTR lpRootPathName, // address of root directory of the file system
LPTSTR lpVolumeNameBuffer, // address of name of the volume
DWORD nVolumeNameSize, // length of lpVolumeNameBuffer
LPDWORD lpVo[code][/code]lumeSerialNumber, // address of volume serial number
LPDWORD lpMaximumComponentLength, // address of system's maximum filename length
LPDWORD lpFileSystemFlags, // address of file system flags
LPTSTR lpFileSystemNameBuffer, // address of name of file system
DWORD nFileSystemNameSize // length of lpFileSystemNameBuffer
);

Обратите внимание на lpMaximumComponentLength
Dmitri R. S.:
Тут у меня вопрос. Пишу:
<?
$file=fopen("xyz","r+");
$x=fgets($file,255);
fputs($file,time()."\n"."true");
fclose($file);
?>
PHP непонятно почему ставит при открытии файла указатель на конец (в результате то, что я писал, находится в конце файла, как будто я открывал в режиме а+). В локалке ставит на начало, как и описано.
'r+': Open for reading and writing; place the file pointer at the beginning of the file.
Дмитрий Эсс:
PHP непонятно почему ставит при открытии файла указатель на конец
А Вы уверены? Проверьте это с помощью http://php.net/ftell и сделайте выводы.
Дмитрий Котеров:
В крайнем случае, сделайте fseek().
Dmitri R. S.:
Дмитрий Котеров:
Дмитрий Эсс:
После того, как я вставил fopen, а потом fseek, ничего не поменялось. ftell всё првильно говорит. А результат не меняется.
Оказалось, баг мой, а не РНР. Я дважды писал в файл, вот так:
$file=fopen("xyz","r+");
$a=fgets($file,255);
fputs($file,$a.time()."\ntrue");
fclose($file);
Дмитрий Эсс:
Dmitri R. S.:
Проверили, но выводы не сделали. См. http://xpoint.ru/archive/threads/25/5143.html , пхп не может раздвинуть файл.
Dmitri R. S.:
Дмитрий Эсс:
Не надо было раздвигать. Требовалось оставить первую строчку без изменений и вписать в следующие строки более актуальную информацию. Понятно, что r+ пишет в режиме замены. Не текстовый редактор, всё-таки.
Дмитрий Эсс:
Dmitri R. S.:
Ой, извените за невнимательность.
Ant:
Ветка выделена в отдельную тему «Максимальное количество символов (длина) в названии файла в OS Windows.»,
расположенную в форуме Прочее (27 Марта 2005, 17:19).
Ant:
Ветка выделена в отдельную тему «Как подсчитать количество файлов в определённой директории?»,
расположенную в форуме Разное :: PHP (27 Марта 2005, 17:22).

Эта тема на forum.dklab.ru