2017-05-27 5 views
0

私はファイルハッシングのクラスを作成していますが、最初は固まってしまいました。is_file()とis_dir()がうまくいきません

class fileHashing 
{ 
    private $start_path = '../../../test'; 
    private $log_path = '../../../test/log'; 
    private $log_file = 'fileHash.xyz'; 

    function __construct() 
    { 
     $this->open(); 
    } 

    private function open() { 
     $files_list = scandir($this->start_path); 
     print_r($files_list); 
     date_default_timezone_set('Europe/Rome'); 
     foreach ($files_list as $key => $element) { 
      if (is_file($element)) { 
       echo "FILE: " . $element . PHP_EOL; 

      } elseif (is_dir($element)) { 
       echo "DIR: " . $element . PHP_EOL; 
      } else { 
       echo "NONE: " . $element . PHP_EOL; 
      } 
     } 
    } 
} 

$a = new fileHashing(); 

戻り値:

Array 
(
    [0] => . 
    [1] => .. 
    [2] => fileupload.php 
    [3] => log 
    [4] => test1.php 
    [5] => tsconfig.json 
) 
DIR: . 
DIR: .. 
FILE: fileupload.php 
NONE: log 
NONE: test1.php 
NONE: tsconfig.json 

logがフォルダであり、それはそれとして認識されていないとの両方test1.phptsconfig.jsonがファイルとして認識されていません。 scandir()/is_file()/is_dir()について不明な点がありますか?

+0

多分あなたは '$ this-> start_pathを使うべきです。 '/'。 'is_dir'と' is_file'のための$ element' – Philipp

+0

これらのファイルをシンボリックリンクにすることはできますか? 'is_link()'を試してください – rickdenhaan

+0

@Philipp私は関数について何か不足していることを知っています。私はファイル名が十分であるように '.ext => file'' no ext => folder'を区別するファイル名を解析します。フィリップスに感謝します。ファイル/ディレクトリを分析する方法を教えてください。スラッシュ '/'をチェックしていますか? – Brigo

答えて

0

あなたはまたis_fileis_dir内のあなたのファイル名にstart_pathを追加する必要があります。このようにすることができます

private function open() { 
    $files_list = scandir($this->start_path); 
    print_r($files_list); 
    date_default_timezone_set('Europe/Rome'); 
    foreach ($files_list as $key => $element) { 
     $file = $this->start_path . '/' . $element; 
     if (is_file($file)) { 
      echo "FILE: " . $element . PHP_EOL; 

     } elseif (is_dir($file)) { 
      echo "DIR: " . $element . PHP_EOL; 
     } else { 
      echo "NONE: " . $element . PHP_EOL; 
     } 
    } 
} 
1

は、この方法を使用します。 -

if (filetype($this->start_path . '/' . $element) == "dir") { 
    // dir 
}elseif(filetype($this->start_path . '/' . $element) == "file") { 
    // file 
} 
// or this way 
if (is_dir($this->start_path . '/' . $element)) { 
    // dir 
}elseif(is_file($this->start_path . '/' . $element)) { 
    // file 
} 
+0

Ranjeetありがとうございました。問題は@Philippで強調された問題でしたが、良い代替ソリューションです! +1 '私は 'filetype()'について知らなかった – Brigo

関連する問題