一、文件讀取
在Linux系統中,文件是以位元組為單位讀取的。用戶可以使用open、read、write和close等函數對文件進行操作。
下面是打開文件的代碼示例:
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> int main() { int fd; char buf[1024]; fd = open("test.txt", O_RDONLY); if (fd == -1) { printf("Failed to open test.txt\n"); exit(EXIT_FAILURE); } ssize_t n = read(fd, buf, sizeof(buf)); close(fd); buf[n] = '\0'; printf("%s", buf); return 0; }
代碼解釋:
- 使用open函數打開文件。
- 如果文件打開失敗,使用printf函數打印錯誤信息並使用exit函數退出程序。
- 使用read函數讀取文件。
- 使用close函數關閉文件。
- 在buf末尾添加’\0’。
- 使用printf函數輸出buf。
二、文件定位
Linux提供了lseek函數用於定位文件讀寫指針。lseek函數的原型如下:
#include <unistd.h> off_t lseek(int fd, off_t offset, int whence);
其中,fd表示文件描述符,offset表示偏移量,whence表示偏移起始點。whence有三種方式:
- SEEK_SET表示相對於文件開頭的偏移。
- SEEK_CUR表示相對於當前位置的偏移。
- SEEK_END表示相對於文件結尾的偏移。
下面是利用lseek函數實現文件複製的代碼示例:
#include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> #define BUF_SIZE 1024 int main(int argc, char *argv[]) { int in_fd, out_fd; char buffer[BUF_SIZE]; ssize_t n_read; if (argc != 3) { printf("Usage: %s source destination\n", argv[0]); exit(EXIT_FAILURE); } in_fd = open(argv[1], O_RDONLY); if (in_fd == -1) { printf("Failed to open %s\n", argv[1]); exit(EXIT_FAILURE); } out_fd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); if (out_fd == -1) { printf("Failed to create %s\n", argv[2]); exit(EXIT_FAILURE); } while ((n_read = read(in_fd, buffer, BUF_SIZE)) > 0) { if (write(out_fd, buffer, n_read) != n_read) { printf("Failed to write to %s\n", argv[2]); exit(EXIT_FAILURE); } } if (n_read == -1) { printf("Failed to read from %s\n", argv[1]); exit(EXIT_FAILURE); } if (close(in_fd) == -1) { printf("Failed to close %s\n", argv[1]); exit(EXIT_FAILURE); } if (close(out_fd) == -1) { printf("Failed to close %s\n", argv[2]); exit(EXIT_FAILURE); } return 0; }
代碼解釋:
- 使用open函數打開輸入輸出文件。
- 如果文件打開失敗,使用printf函數打印錯誤信息並使用exit函數退出程序。
- 使用read函數以BUF_SIZE的大小讀取輸入文件,並使用write函數將讀取到的內容寫入輸出文件。
- 使用close函數關閉輸入輸出文件。
三、文件權限
Linux系統中,文件有讀、寫、執行三種權限。
- 讀取權限:使用open函數時需要使用O_RDONLY標誌指明。
- 寫入權限:使用open函數時需要使用O_WRONLY或O_RDWR標誌指明。
- 執行權限:使用open函數時需要使用O_EXEC標誌指明。
文件權限可以使用chmod函數修改。可以通過命令chmod +x file添加執行權限。
四、文件搜索
在Linux系統中,可以使用find命令搜索文件。使用find命令需要指定搜索的路徑和搜索的文件名。例如,以下命令將搜索/home目錄下所有以.txt為後綴的文件:
$ find /home -name "*.txt"
除了find命令,Linux還提供了locate和grep命令用於文件搜索。例如,以下命令將搜索包含pattern文本的所有文件:
$ grep -r "pattern" /path/to/search
五、文件壓縮
在Linux系統中,可以使用gzip和tar命令對文件進行壓縮。gzip命令是將單個文件進行壓縮,tar命令則是將多個文件打包並壓縮。
使用gzip命令對文件進行壓縮的示例:
$ gzip test.txt
使用tar命令對文件進行打包並壓縮的示例:
$ tar -czvf archive.tar.gz file1.txt file2.txt
其中,c表示創建歸檔文件,z表示使用gzip進行壓縮,v表示輸出詳細信息,f表示輸出文件名。
原創文章,作者:ITGHN,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/349450.html