Файл существует PHP-код

<?php

function data_info($data)
{
    if ($data) {
        while (!feof($data)) {
            $buffer = fgets($data);
            if (file_exists($buffer)) {
            $bufferArray[$buffer]['Exists'] = (file_exists($buffer));
            $bufferArray[$buffer]['Readable'] = (is_readable($buffer));
            $bufferArray[$buffer]['Writable'] = (is_writable($buffer));
            $bufferArray[$buffer]['Size'] = (filesize($buffer));
            } else {
                $bufferArray[$buffer]['Exists'] = "No";
            }
        }
        print_r($bufferArray);
    } else {
        echo "The file could not be opened";
    }
}

$data = fopen("D:/xampp/htdocs/Practice/ficheros.txt", "r");
data_info($data);

?>

Если у меня есть это: ficheros.txt: ExistingFile.txt ExistingFile2.txt ExistingFile3.txt ... ... Это работает, но если у меня есть, по крайней мере, 1 NON EXISTING FILE, то он также будет принимать каждый файл как несуществующий.

Что не так? Я верю, что-то во внутреннем состоянии.


Я имею в виду, что не так со всем кодом.

Мне просто нужно сделать массив с массивами, хороший результат будет:

    array
(
    'text.txt' => array
        (
        'exists' => true,
        'readable' => true,
        'writable' => true,
        'Size' => 64
        ),

    'document.doc' => array
        (
        'exists' => false
        ),

    'photo.jpg' => array
        (
    'exists' => true,
    'readable' => true,
    'writable' => false,
    'size' => 354915
        )
)
1 php
14.12.2008 03:34:54
3 ОТВЕТА
РЕШЕНИЕ

Хм, хорошо, что работает в Linux (хотя я должен $bufferсначала обрезать имя файла ).

4
14.12.2008 03:49:27
Тоже самое. Также необходима проверка для fgets (), так как feof () обычно возвращает false после последнего успешного выполнения fgets ().
mweerden 14.12.2008 03:58:04
Я знаю, что это старое, но я помню, что отделка исправила это.
Matías Aereal Aeón 1.03.2011 21:28:20

Да, это работает для меня тоже, если у меня есть в ficheros.txt

Existingfile.txt
AnotherExistingfile.txt

Или

FakeFile.txt
FakeFile2.txt

Но если я объединю их обоих:

Fakefile.txt
Existingfile.txt

Это не сработает, скрипт в последнем случае принимает оба файла как несуществующие.

0
14.12.2008 03:55:29
Хм .. это кажется очень странным. Используете ли вы тот же код, который вы разместили здесь? Имеет ли значение, в каком положении находится несуществующий файл в файле ficheros.txt?
mweerden 14.12.2008 04:03:03
Нет, не имеет значения, на каком месте; [
Matías Aereal Aeón 14.12.2008 04:30:18
Я согласен, очень странно. На данный момент я могу думать только о чем-то специфичном для окон или опечатке, введенной в тестирование.
Athena 14.12.2008 04:34:46

Я не на 100% почему бы и нет, но я играл с этим, и это работает:

<?php

function data_info($data)
{
    if (!$data){return "The file could not be opened";}
    while (!feof($data))
     {
        $buffer = implode('',fgetcsv($data));//fgetcsv will only return an array with 1 item so impload it
        if(file_exists($buffer))
         {
            $bufferArray[$buffer]['Exists'] = (file_exists($buffer));
            $bufferArray[$buffer]['Readable'] = (is_readable($buffer));
            $bufferArray[$buffer]['Writable'] = (is_writable($buffer));
            $bufferArray[$buffer]['Size'] = (filesize($buffer));
         }
        else
         {
            $bufferArray[$buffer]['Exists'] = "No";
         }
     }
    print_r($bufferArray);
}

$data = fopen("c:/file.txt", "r");
data_info($data);

?>

Результаты из файла, который я использовал:

Array
(
    [c:/messageService.log] => Array
        (
            [Exists] => 1
            [Readable] => 1
            [Writable] => 1
            [Size] => 0
        )

    [c:/setup.log] => Array
        (
            [Exists] => 1
            [Readable] => 1
            [Writable] => 1
            [Size] => 169
        )

    [c:/fake1.txt] => Array
        (
            [Exists] => No
        )

    [c:/fake2.txt] => Array
        (
            [Exists] => No
        )

)

Подумав, прочитав некоторые ваши комментарии, попробуйте использовать точные пути, а не только имя файла.

0
14.12.2008 04:34:57