PDA

View Full Version : سوال: مشکل در بدست اوردن اندازه یک فایل



judoka
پنج شنبه 07 آبان 1394, 22:45 عصر
سلام لطفا اهنماییم کنید
من یه برنامه خیلی ساده میخوام بنویسم واسه بدست اوردن اندازه چند تا فیل تکست تو یه پوشه ولی هرکاری میکنم این ارور رو میده :
Warning: filesize(): stat failed for 3.txt


این هم سورس برنامه ...>
<?php
$dir=opendir("mytext");
while($fname=readdir($dir)){
if(substr($fname,strlen($fname)-4,4)==".txt"){
echo filesize($fname)."<br>";
}
}
closedir($dir);
?>

djtrex
جمعه 08 آبان 1394, 02:38 صبح
سلام لطفا اهنماییم کنید
من یه برنامه خیلی ساده میخوام بنویسم واسه بدست اوردن اندازه چند تا فیل تکست تو یه پوشه ولی هرکاری میکنم این ارور رو میده :
Warning: filesize(): stat failed for 3.txt


این هم سورس برنامه ...>
<?php
$dir=opendir("mytext");
while($fname=readdir($dir)){
if(substr($fname,strlen($fname)-4,4)==".txt"){
echo filesize($fname)."<br>";
}
}
closedir($dir);
?>

این خطا به خاطر اینه که فایل وجود نداره (یا در مواردی برای عدم دسترسی نیز هست!)
متغیر fname فقط نام فایل هست شما باید مسیر رو کامل بدید (مسیر دایرکتوری +‌ اسم فایل)

============
همچین پیشنهاد میکنم برای موارد پیچیده تر از dir, SplFileInfo استفاده کنید:



$path = '/path/to/dir/';
$directory = dir($path);


while (($entry = $directory->read()) !== false) {
$file = new SplFileInfo($path . $entry);


if($file->isFile() && $file->getExtension() == 'txt'){
echo $file->getFileName() . ': ' . $file->getSize() . PHP_EOL;
}
}


$directory->close();


اطلاعات بیشتر:
http://php.net/manual/en/function.dir.php
http://php.net/manual/en/class.splfileinfo.php

============
اگر هم نیاز حرفه ای تری دارید میتونید از کامپوننت Finder سیمفونی استفاده کنید. (باید با composer نصب کنید!)



$finder = (new Finder())
->files()
->in($path)
->name('*.txt');


foreach($finder as $file){
echo $file->getFileName() . ': ' . $file->getSize() . PHP_EOL;
}


اطلاعات بیشتر:
http://symfony.com/doc/current/components/finder.html

judoka
جمعه 08 آبان 1394, 10:44 صبح
مشکلم حل شد
دستت درد نکنه