Файл существует PHP-код - PullRequest
1 голос
/ 14 декабря 2008
<?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 НЕ СУЩЕСТВУЮЩИЙ ФАЙЛ, то каждый файл будет считаться несуществующим.

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


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

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

    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
        )
)

Ответы [ 3 ]

4 голосов
/ 14 декабря 2008

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

0 голосов
/ 14 декабря 2008

Я не 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 декабря 2008

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

Existingfile.txt
AnotherExistingfile.txt

Или

FakeFile.txt
FakeFile2.txt

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

Fakefile.txt
Existingfile.txt

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...