dir under linux.Linux下的类dir程序.

原创 2007年09月21日 17:43:00

示例在linux如何获取文件信息.

#include <unistd.h>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<errno.h>
#include 
<sys/types.h>
#include 
<sys/stat.h>
#include 
<dirent.h>
#include 
<time.h>

static int get_file_size_time(const char *file_path,const char *filename) {
    
struct stat statbuf;
    
if(stat(file_path,&statbuf) == -1{
        printf(
"Get stat on %s Error:%sn",
            filename,strerror(errno));
        
return -1;
    }

    
//获得目录
    if(S_ISDIR(statbuf.st_mode)) {
        printf(
"[%s]n",filename);
        
return 1;
    }

    
//获得文件
    if(S_ISREG(statbuf.st_mode)) {
        printf(
"%stsize:%ld bytestmodified at %s",
            filename,statbuf.st_size,
            ctime(
&statbuf.st_mtime));
    }

    
return 0;
}


int main(int argc,char **argv) {
    DIR 
*dirp;
    
struct dirent *direntp;
    
int stats;

    
if(argc != 2{
        printf(
"Usage:%s filnamena",argv[0]);
        exit(
1);
    }

    
    
//获得文件或错误
    if((stats = get_file_size_time(argv[1],argv[1]) == 0
        
|| (stats == -1)) exit(1);
    
//获得目录
    if((dirp = opendir(argv[1])) == NULL) {
        printf(
"Open Directory %s Error:%sn",argv[1],
            strerror(errno));
        exit(
1);
    }

    printf(
"Open Dir %s success.n",argv[1]);
    
while((direntp = readdir(dirp)) != NULL) {
        
int path_length = strlen(argv[1])
            
+ strlen(direntp->d_name) + 2;
        
char *file_path = (char*)malloc(path_length * sizeof(char));
        
if(file_path == NULL) {
            fprintf(stderr,
"Not enough memory.");
            exit(
1);
        }

        strcpy(file_path,argv[
1]);
        
if(file_path[strlen(file_path) - 1!= '/')
            strcat(file_path,
"/");
        strcat(file_path,direntp
->d_name);
        
if(get_file_size_time(file_path,direntp->d_name) == -1{
            free(file_path);
            
break;
        }

        free(file_path);
    }

    closedir(dirp);
    
    
return 0;
}

 

相关文章推荐

Linux下DIR,dirent,stat等结构体详解

最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。 首先说说DIR这一结构体,以下为DIR结构体的定义: st...

linux下c++判断文件夹空,DIR,dirent,stat等结构体详解

DIR结构体的定义:

Linux下DIR,dirent,stat等结构体详解

copy from 点击打开链接 最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。 首先说说DIR这一结构体,以...

Linux下DIR,dirent,stat等结构体详解

摘要:   最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。   DIR结构体类似于FILE,是一个内部结构,以下几个函数用...

Linux下目录文件的操作(opendir,readdir,closedir) 以及DIR,dirent,stat等结构体详解

From:http://blog.chinaunix.net/uid-27213819-id-3810699.html 注:为什么要说目录文件?其实在linux中目录也是一种文件,只是它的内容是...

Linux下的DIR,dirent,stat等结构体详解

本文转自http://www.liweifan.com/2012/05/13/linux-system-function-files-operation/,转载请说明出处。 摘要:   最近...

《linux 内核完全剖析》上帝为什么是右移20,而不是22! dir = (unsigned long *) ((from>>20) & 0xffc)

在memory.c里面有这么一段代码。为了其中的一句话,让我内牛满面啊!  dir = (unsigned long *) ((from>>20) & 0xffc) int free_page_...

linux内核源码分析之__lookup_mnt(struct vfsmount *mnt, struct dentry *dentry, int dir)

不知道理解是否正确,如欲转载请注明出处  感觉博客好像已经荒废了一段时间一样,最近学的都是断断续续的,所学的都是不成形的。都不没啥好写的说。想想刚开通博客的时候那是热情高涨啊,一直发表一直发表。现在...

linux驱动中的宏 _IOC_NR, _IOC_TYPE, _IOC_SIZE, _IOC_DIR

转载自 : http://blog.csdn.net/u010245383/article/details/29391805     虽然排版都点点乱,但是内容还是较全面的。    在驱动程序里,...
  • jltsun
  • jltsun
  • 2016年09月27日 11:30
  • 194
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:dir under linux.Linux下的类dir程序.
举报原因:
原因补充:

(最多只允许输入30个字)