$dir_handle = @opendir($url) or die("Unable to open $url");
$count = "0";
while ($file = readdir($dir_handle)) {
if (!is_dir($url.'/'.$file) && ($file="*.jpg" || $file="*.gif" || $file="*.png") && $file!="picture0.*") {
$galleryEventFile[$count] = $file;
$count++;
}
}
closedir($dir_handle);
Run Code Online (Sandbox Code Playgroud)
我认为这与这一行有关:
if (!is_dir($url.'/'.$file) && ($file="*.jpg" || $file="*.gif" || $file="*.png") && $file!="picture0.*")
Run Code Online (Sandbox Code Playgroud)
但我不确定
我readdir实际上没有读取给定文件夹中的所有文件.我只看到以下三个文件和一个文件夹:
main.cpp
main.hpp
imageLoader.hpp
util
Run Code Online (Sandbox Code Playgroud)
而如果我使用bash,ls -lat我会得到以下列出的文件:
drwxrwxr-x 11 me me 4096 Jun 30 10:48 ..
-rw-rw-r-- 1 me me 7797 Jun 30 10:19 main.cpp
-rw-rw-r-- 1 me me 690 Jun 30 10:18 crate.hpp
-rw-rw-r-- 1 me me 2691 Jun 30 10:18 crate.cpp
drwxrwxr-x 2 me me 4096 Jun 30 00:02 util
drwxrwxr-x 3 me me 4096 Jun 29 23:37 .
-rw-rw-r-- 1 me me 2584 Jun 22 19:38 imageLoader.cpp
-rw-rw-r-- 1 me me 333 Jun …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用语言C列出文件夹的所有文件夹和所有文件.
这是以下代码:
#include <errno.h>
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
int main (int argc, char *argv[])
{
struct dirent *direnp;
struct stat filestat;
DIR *dirp;
if (argc != 2) {
printf("error");
return 1;
}
if ((dirp = opendir(argv[1])) == NULL) {
printf("error");
return 1;
}
while ((direnp = readdir(dirp)) != NULL)
{
stat(direnp->d_name, &filestat);
printf("%s\n", direnp->d_name);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
进入cmd ./file.c文件夹后
此代码的输出是:
folder1
folder2
file1.txt
..
.
file2.txt
Run Code Online (Sandbox Code Playgroud)
我想删除这部分:
..
.
Run Code Online (Sandbox Code Playgroud)
所以我希望的输出是:
folder1
folder2
file1.txt
file2.txt
Run Code Online (Sandbox Code Playgroud)
如何隐藏3个点?
(编辑:代码中有一些错误.我纠正了它)
目标目录有1000万个+文本文件.using $a = scandir()在网页上是致命的慢.需要数组结果不到两秒钟.过滤不起作用(也扫描整个列表)
所有我能想到的是使用一个perl或c程序来预处理并将目标目录中的x千个文件名填充到一个文件中,标记目标目录中的文件名,最后用一个.pi(或其他东西)选中并使用php的file()函数来获取而是从文件中的列表.
我需要打开并处理每个文件,然后才能填入表中.仅供参考.我不能等待超过1-2秒的时间让阵列可用.任何协助赞赏.记忆不是问题.hdd空间不是问题,处理器能力不是问题.问题是在使用网页前端时快速获取阵列中的列表.我等不及了,因为我厌倦了等待.
我试图用一个简短快速的C程序与opendir和readdir,但即使它需要近4分钟时间扫描目录列表.至少我可以在它上面放一个调控器来限制x文件.
看来答案是调用perl或者c,我可以限制X文件,我可以把这个程序system()或backticks.那个列表可以打开file()...... OTF ......有道理吗?
我写了一个打印目录名或文件名的程序.这很容易,但我遇到了麻烦.它无法区分目录和文件类型.我知道,我用stat.st_mode来完成它.但有些不对劲:

当我使用gdb检查st_mode值时,我发现它是0,除了"." 和"..",所以这里有一个问题:为什么st_mode为0?
那是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
int main(void)
{
DIR *pDir = opendir("MyDirectory");
struct dirent *pDirent;
struct stat vStat;
if (pDir == NULL)
{
printf("Can't open the directory \"MyDirectory\"");
exit(1);
}
while ((pDirent = readdir(pDir)) != NULL)
{
stat(pDirent->d_name, &vStat);
if (S_ISDIR(vStat.st_mode))
printf("Directory: %s\n", pDirent->d_name);
else
printf("File: %s\n", pDirent->d_name);
}
closedir(pDir);
return 0;
}
Run Code Online (Sandbox Code Playgroud)