一、 文件操作
1、 获取文件属性
int stat (const char *filename , struct stat *buf );
int fstat(int fd, struct stat *buf );
int lstat (const char *filename , struct stat *buf );部分常用结构体成员:st_mode : 文件的类型和存取权限st_nlink : 文件硬连接数目st_uid : 文件所有者的用户idst_gid : 文件所有者的组idst_size : 文件大小st_mtime : 文件最后修改时间st_atime : 文件最后访问时间st_ctime : 文件最后(文件所有者、所有组、权限)更改时间//输出时间时要用ctime()函数将时间转化为字符串输出printf ("mtime: %s \n" , ctime(buf.st_mtime));/*判断文件属性*/ S_ISLNK : 链接文件S_ISREG : 一般文件S_ISDIR : 目录文件S_ISCHR : 字符设备文件S_ISBLK : 块设备文件S_ISFIFO: FIFO文件S_ISSOCK: socket 文件
2、 设置文件属性
1) 修改文件权限
#include<sys/types.h>
#include<sys/stat.h> int chmod(const char *path, mode_t mode);
int fchmod(int fd, mode_t mode);
2) 修改文件用户id / 组id
#include<sys/types.h>
#include<unistd.h> int chown(const char *path, uid_t owner, gid_t group );
int fchown(int fd, uid_t owner, gid_t group );
int chown(const char *path, uid_t owner, gid_t group );
3) 修改文件大小
#include<sys/types.h>
#include<unistd.h> int truncate(const char *path, off_t len);
int ftruncate(int fd, off_t len);
4) 修改文件时间
#include<sys/types.h>
#include<utime.h>
int utime(const char *filename, struct utimbuf *buf);struct utimbuf{time_t actime;time_t modtime;
}
2、 文件移动和删除
1) 文件移动
#include<stdio.h>
int rename(const char *oldname, const char *newname);
2) 文件删除
#include<unistd.h>
int unlink(const char *name);
int remove(const char *name);
3、目录操作
1) 目录的创建和删除
#include<sys/types.h>
#include<sys/stat.h>
int mkdir(const char *name, mode_t mode);
int rmdir(const char *name);
2) 获取当前目录
#include<unistd.h>
char * getcwd(char *buf, size_t size);
char getwd(char *buf);
2) 设置工作目录
#include<unistd.h>
int chdir(const char *path);
int fchdir(int fd);
4、获取目录信息
#include<sys/types.h>
#include<dirent.h>
DIR *opendir(const char *name);
struct dirent *readdir(DIR *dir);
int closedir(DIR *dir);struct dirent{long d_ino;off_t off;unsigned short d_reclen;char d_name;
}
二、 其他总结
1、 磁盘分区分为主分区、扩展分区,而扩展分区有可分为若干逻辑分区,同时规定主分区、扩展分区之和最多为4个(原因:磁盘MBR分配有446字节,而分区表只占用64字节,而每个分区所存信息需要16字节,故最多有4个分区),扩展分区最多只能有1个。2、 block为1k的inode可存储最大单一文件的大小为16GB。inode分为12个直接、1间接、1双间接、1三间接:12个直接指向: 12 * 1K = 12K
间接 : 256 * 1K = 256K
双间接: 256 * 256 * 1K
三间接: 256 * 256 * 256 * 1K
总和: 12K + 256K + 256*256K + 256*256*256K = 16GB3、什么是格式化?电子计算机上指用一种系统软件对硬盘或软盘进行处理,使符合数据存储和读取的规定格式。为什么要进行格式化?每种操作系统所设置的文件属性、权限不同,为了存放这些文件所需的数据,就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。