2015-01-23 4 views
-1

У меня есть проблема при попытке открыть файл и просмотреть его содержимое с помощью PHPКак открыть файл и отобразить его содержимое с помощью php?

Мой файл называется hello.txt

Вот мой PHP код

<?php 

$filename = 'hello.txt'; 
$filePath = 'c:\\Users\\bheng\\Desktop\\'.$filename; 

if(file_exists($filePath)) { 
    echo "File Found."; 

    $handle  = fopen($filePath, "rb"); 
    $fileContents = fread($handle, filesize($filePath)); 
    fclose($handle); 

    if(!empty($fileContents)) { 
     echo "<pre>".$fileContents."</pre>"; 
    } 

} 
else { 
    echo "File Not Found."; 
} 

?> 

Я получил это от http://php.net/manual/en/function.fread.php

Я продолжаю получать ошибку:

fread(): Length parameter must be greater than 0

Может кто-нибудь помочь мне, пожалуйста?

+2

Попробуйте file_get_contents упростить вещи – JAL

+1

$ имя_файла = 'Hello php.txt'; OR $ filename = 'hello.txt'; ??? – andrew

+0

@andrew: Извините. Это опечатка. Я починил это. – iori

ответ

2

Хотя есть хорошие ответы здесь об использовании file_get_contents() вместо этого, я попытаюсь объяснить WHT это на самом деле не работает, и как заставить его работать без изменение метода.

filesize() функция использует кэш. Вероятно, вы выполнили этот код, оставив файл пустым.

Используйте clearstatcache функции каждый раз, когда изменение файла, или перед тестированием его размера:

clearstatcache(); 
$fileContents = fread($handle, filesize($filePath)); 

Кроме того, очевидно, убедитесь, что ваш файл не пуст! Проверьте это:

clearstatcache(); 
if(file_exists($filePath) && filesize($filePath)) { 
    // code 
} 
+0

Полезно знать. Спасибо, что разделили этот совет! – iori

+1

Еще один счастливый конец ;-) –

1

Это не должно быть так сложно, и это, конечно, не требует, чтобы прочитать файл в двоичном режиме:

if (file_exists($filePath))//call realpath on $filePath BTW 
{ 
    echo '<pre>', file_get_contents($filePath), '</pre>'; 
} 

В общем, вы действительно не хотите делать такого рода вещи слишком много, хотя

+0

Вы хотите дать нам все краткие советы о том, почему этот вид продуктов не очень хорош. Благодарю. – iori

1

Если вам нужно прочитать содержимое всего файла целиком, есть функция быстрого http://php.net/manual/en/function.file-get-contents.php Так что вам не нужно беспокоиться создать обработчик файлов и закрыть его впоследствии.

$fileContents = file_get_contents($filePath); 
1

с использованием метода file_get_contents РНР

echo file_get_contents("text.txt"); 
+0

Преобразуйте все вещи в одну строку! Мне нравится это ! :) – iori

+1

@ evoque2015: ... put производит ошибки, если файл не существует, поэтому я включил проверку 'file_exists' в свой ответ –

+0

@EliasVanOotegem: Вы правы - об этом. Я полностью забываю об этом на секунду. – iori