file ملف->إوف () دائما العودة كاذبة عند استخدام فب سبلفيلوبجيكت
-
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+
, ، ينتقل المؤشر إلى نهاية الملف.
لا تنتمي إلى StackOverflow