Comment lire le contenu (sous-répertoires et noms de fichiers) d'un répertoire utilisant le langage C sous Linux.Lecture du contenu du répertoire sous Linux
Répondre
Les fonctions pertinentes sont opendir, readdir et closedir. Je recommande "man opendir" etc
Voici le code qui va le faire (tiré de link), j'espère que cela vous permettra de commencer ce que vous cherchez.
#include <ftw.h>
#include <stdio.h>
#include <sys/stat.h>
int list(const char *name, const struct stat *status, int type);
int main(int argc, char *argv[]) {
if(argc == 1)
ftw(".", list, 1);
else
ftw(argv[1], list, 1);
return 0;
}
// FTW_F The object is a file
// FTW_D ,, ,, ,, ,, directory
// FTW_DNR ,, ,, ,, ,, directory that could not be read
// FTW_SL ,, ,, ,, ,, symbolic link
// FTW_NS The object is NOT a symbolic link and is one for
// which stat() could not be executed
int list(const char *name, const struct stat *status, int type) {
if(type == FTW_NS)
return 0;
if(type == FTW_F)
printf("0%3o\t%s\n", status->st_mode&0777, name);
if(type == FTW_D && strcmp(".", name) != 0)
printf("0%3o\t%s/\n", status->st_mode&0777, name);
return 0;
}
Edit: FTW est ce qui est utilisé pour marcher le système de fichiers, pour plus d'informations à ce sujet s'il vous plaît se référer à sa page man ftw man page
+1 pour compenser l'insensé -1. 'ftw' ** lit ** un répertoire. –
Plus 1 à R. pour le bon commentaire, ftw et nftw lisent tous deux les répertoires. –
Voici un programme récursif d'imprimer le nom de tous les sous-répertoires et fichiers récursive .
Utilisation: nom de chemin ./a.out
Les conditions d'erreur ne sont pas vérifiées pour le nom de chemin d'accès initial fourni en tant qu'argument de ligne de commande.
Flux de code de base:
Toutes les entrées du répertoire courant sont lues.
si c'est le nom du répertoire, son nom est ajouté au nom du chemin et la fonction est appelée récursivement.
L'autre nom des fichiers est imprimé.
détails sur les fonctions particulières peuvent être référencées dans les pages de manuel respectives comme l'a par dmuir:
#include<sys/stat.h>
#include<unistd.h>
#include<dirent.h>
#include<error.h>
int read(char *pth)
{
char path[1000];
strcpy(path,pth);
DIR *dp;
struct dirent *files;
/*structure for storing inode numbers and files in dir
struct dirent
{
ino_t d_ino;
char d_name[NAME_MAX+1]
}
*/
if((dp=opendir(path))==NULL)
perror("dir\n");
char newp[1000];
struct stat buf;
while((files=readdir(dp))!=NULL)
{
if(!strcmp(files->d_name,".") || !strcmp(files->d_name,".."))
continue;
strcpy(newp,path);
strcat(newp,"/");
strcat(newp,files->d_name);
printf("%s\n",newp);
//stat function return a structure of information about the file
if(stat(newp,&buf)==-1)
perror("stat");
if(S_ISDIR(buf.st_mode))// if directory, then add a "/" to current path
{
strcat(path,"/");
strcat(path,files->d_name);
read(path);
strcpy(path,pth);
}
}
}
int main(int argc,char *argv[])
{
read(argv[1]);
}
- 1. Définition du répertoire sous Linux
- 2. Répertoire du programme en cours sous Linux?
- 3. Lecture du contenu du contenu de SyndicationContent
- 4. Traçage du contenu du répertoire
- 5. lecture du code source du noyau Linux
- 6. Contenu du répertoire diff
- 7. WordPress dans sous-répertoire du sous-répertoire
- 8. Redirection du sous-répertoire sous-répertoire parent
- 9. contenu du répertoire de lecture en toute sécurité
- 10. Lecture du contenu des fichiers dans un répertoire particulier
- 11. Taille du répertoire sous Linux. Question de performance
- 12. Lecture du flux d'entrée USB sur Linux
- 13. Lecture du contenu du fichier CSV
- 14. représentation textuelle du contenu du répertoire
- 15. Tri personnalisé du contenu du répertoire
- 16. Java, lecture d'un fichier du répertoire courant?
- 17. Lecture des modifications du contenu du fichier dans .NET
- 18. Lecture programmée du contenu de/etc
- 19. Lecture du contenu d'android-layer
- 20. Affichage `pretty output` du contenu du répertoire du tableau
- 21. Affinité du processeur sous Linux
- 22. Comment supprimer le contenu du répertoire Cache?
- 23. Supprimer le contenu du répertoire du serveur FTP en C#
- 24. Git submodule du sous-répertoire?
- 25. Sinatra Vues du sous-répertoire
- 26. XNA C# Problème lors de la lecture du contenu du répertoire
- 27. Lecture des paramètres du noyau Linux
- 28. Inodes de répertoire Unix - fragmentation et vidage du contenu du répertoire
- 29. Lecture du contenu du message et de l'expéditeur du message?
- 30. rediriger dans le sous-répertoire AND hors du sous-répertoire
Montrez-nous le code de l'endroit où vous êtes frappé de telle sorte que quelqu'un peut vous aider. Et explique le problème avec le code actuel que vous avez. – Mahesh