file ملف->إوف () دائما العودة كاذبة عند استخدام فب سبلفيلوبجيكت

StackOverflow https://stackoverflow.com//questions/11705950

  •  13-12-2019
  •  | 
  •  

سؤال

لماذا هو بلدي النصي فب شنقا?

$path = tempnam(sys_get_temp_dir(), '').'.txt';
$fileInfo = new \SplFileInfo($path);
$fileObject = $fileInfo->openFile('a');
$fileObject->fwrite("test line\n");
var_dump(file_exists($path));          // bool(true)
var_dump(file_get_contents($path));    // string(10) "test line
                                       // "
var_dump(iterator_count($fileObject)); // Hangs on this

إذا قمت بحذف السطر الأخير (iterator_count(...) واستبدالها بهذا:

$i = 0;
$fileObject->rewind();
while (!$fileObject->eof()) {
    var_dump($fileObject->eof());
    var_dump($i++);
    $fileObject->next();
}
// Output:
// bool(false)
// int(0)
// bool(false)
// int(1)
// bool(false)
// int(2)
// bool(false)
// int(3)
// bool(false)
// int(4)
// ...

ال $fileObject->eof() دائما يعود كاذبة حتى أحصل على حلقة لا نهائية.

لماذا تحدث هذه الأشياء?أنا بحاجة للحصول على عدد الخط.

هل كانت مفيدة؟

المحلول

من خلال ما أراه في التعليمات البرمجية الخاصة بك ، كنت فتح الملف مع الوضع a في هذا الخط:

$fileObject = $fileInfo->openFile('a');

عندما تفعل ذلك ، الكتابة فقط:

$fileObject->eof() يحتاج إلى قراءة الملف ، يجب عليك فتح الملف مع a+ للسماح القراءة / الكتابة:

$fileObject = $fileInfo->openFile('a+');

بس:إما مع a أو a+, ، ينتقل المؤشر إلى نهاية الملف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top