日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文件操作(二) 其他总结

發布時間:2023/11/30 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件操作(二) 其他总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 文件操作

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、什么是格式化?電子計算機上指用一種系統軟件對硬盤或軟盤進行處理,使符合數據存儲和讀取的規定格式。為什么要進行格式化?每種操作系統所設置的文件屬性、權限不同,為了存放這些文件所需的數據,就需要將分區進行格式化,以成為操作系統能夠利用的文件系統格式。

總結

以上是生活随笔為你收集整理的文件操作(二) 其他总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。