当我迭代某个目录中的所有文件时,我在使用is_dir时遇到了问题。 代码有点小,所以如果我发布它,我想你会更好地理解我的意思:
$files = array();
if ($dir = @opendir($folder)){
while($file = readdir($dir)){
if (is_dir($file)) $files[] = $file;
}
closedir($dir);
}
print_r($files)
它转储: ([0] =>。)
否则,如果我不使用此代码检查文件是否为dir:
$files = array();
if ($dir = @opendir($folder)){
while($file = readdir($dir)){
$files[] = $file;
}
closedir($dir);
}
print_r($files)
它转储了预期: ([0] =&gt; .. [1] =&gt; bla [2] =&gt; blablabla [3] =&gt; index.php [4] =&gt; styles.css [5] =&gt;。)< / p>
我想这只是使用$ file var作为参数但不知道如何使其工作的一些菜鸟问题。
感谢阅读!
答案 0 :(得分:6)
正如Kolink在评论中所说,你最好走glob
路线,但如果你决定坚持使用opendir:
路径为$ folder。 '/'。 $ file,而不仅仅是$ file。 opendir()返回相对路径。所以is_dir在循环中返回false。
if ($dir = opendir($folder)){
while(false !== ($file = readdir($dir))) {
if ($file == '.' || $file == '..') {
continue;
} else if (is_dir($folder . '/' . $file)) {
$files[] = $file;
}
}
closedir($dir);
}
另请注意false !==
。这是必要的,因为名为“0”的文件夹将评估为false(或其他一些边缘情况)。此外,您很少真正关心.
和..
,因此可以使用代码来过滤.
和..
。
答案 1 :(得分:4)
问题是:$ file只包含basename,而不是绝对文件名。因此,请在文件夹前添加路径:
is_dir($folder . '/' . $file)
答案 2 :(得分:0)
JFrame frame = new JFrame();
frame.setUndecorated(true);
frame.setBackground(new java.awt.Color(0, 0, 0, 0));
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
frame.setSize(422, 116);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
fxPanel.setScene(scene);
frame.setResizable(false);
frame.setAlwaysOnTop(true);
frame.setFocusableWindowState(false); // <- Here is the secret
frame.setVisible(true);