文件操作(二) 其他总结
生活随笔
收集整理的這篇文章主要介紹了
文件操作(二) 其他总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、 文件操作
1、 獲取文件屬性
#include<sys/types.h> #include<sys/stat.h> #include<unistd.h>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;//access timetime_t modtime;//modification time }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);//若有進程打開了文件,則文件暫時不被刪除,直到所有打開該文件的進程都結束時才被刪除 //若name指向socket文件、FIFO文件或設備文件時,該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;//filename }二、 其他總結
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、什么是格式化?電子計算機上指用一種系統軟件對硬盤或軟盤進行處理,使符合數據存儲和讀取的規定格式。為什么要進行格式化?每種操作系統所設置的文件屬性、權限不同,為了存放這些文件所需的數據,就需要將分區進行格式化,以成為操作系統能夠利用的文件系統格式。總結
以上是生活随笔為你收集整理的文件操作(二) 其他总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 输卵管远端黏连好治吗
- 下一篇: 进程控制 (二) Others