1、linux下文件操作与其他系统文件操作差异较大,先是创建操作:
/*
============================================================================
Name : Test.c
Author : wangchuan
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include
#include
#include
#include
#include
#include
int main(void) {
int f;
const char *f_path="test";
mode_t f_attrib;
struct stat *buf = malloc(sizeof(struct stat));
f_attrib = S_IRUSR | S_IWUSR | S_IWGRP | S_IROTH;
f=open(f_path,O_RDONLY);
if(f == -1){
f=open(f_path,O_RDWR | O_CREAT,f_attrib);
if(f!=-1){
puts("创建一个新文件");
}
else{
puts("无法创建新文件");
return 1;
}
}
else puts("文件打开成功");
close(f);
stat(f_path,buf);
return 0;
2、遍历文件夹
/*
============================================================================
Name : Test.c
Author : wangchuan
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include
#include
#include
#include
#include
#include
#include
#include
void scan_dir(char *dir,int depth)
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;
if((dp = opendir(dir)) == NULL){
puts("无法打开该目录");
return;
}
chdir(dir);
while((entry = readdir(dp)) != NULL){
lstat(entry->d_name,&statbuf);
if(S_IFDIR & statbuf.st_mode){
if(strcmp(".",entry->d_name) == 0 || strcmp("..",entry->d_name) == 0)
continue;
printf("%*s%s/\n",depth,"",entry->d_name);
scan_dir(entry->d_name,depth+4);
}
else
printf("%*s%s\n",depth,"",entry->d_name);
}
chdir("..");
closedir(dp);
}
int main(void) {
printf("Directory scan of /home:\n");
scan_dir("/boot",0);
printf("done.\n");
return 0;
}