2.Linux文件IO基础

03-11 1701阅读

Linux 文件 I/O(Input/Output)基础是 Linux 应用程序开发中的重要组成部分。在 Linux 系统中,文件 I/O 涉及到文件的读取和写入,以及文件描述符、系统调用等概念。以下是 Linux 文件 I/O 的基础知识:

2.Linux文件IO基础
(图片来源网络,侵删)

1. 文件描述符

在 Linux 中,每个打开的文件都与一个文件描述符相关联。文件描述符是一个非负整数,表示进程中打开文件的引用。通常,文件描述符的值为 0、1 和 2,分别代表标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。

2. 打开文件

要在 Linux 中进行文件 I/O,首先需要打开文件。open 系统调用用于打开或创建文件,并返回文件描述符。

#include 
#include 
int main() {
    // 打开文件 example.txt,如果不存在则创建,以读写方式打开
    int fileDescriptor = open("example.txt", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
    // 其他文件 I/O 操作...
    // 关闭文件
    close(fileDescriptor);
    return 0;
}

3. 读取文件

read 系统调用用于从文件中读取数据。它接受文件描述符、缓冲区地址和读取的字节数作为参数。

#include 
#include 
#include 
int main() {
    int fileDescriptor = open("example.txt", O_RDONLY);
    char buffer[256];
    // 从文件中读取数据到缓冲区
    ssize_t bytesRead = read(fileDescriptor, buffer, sizeof(buffer));
    // 处理读取的数据
    std::cout 
    int fileDescriptor = open("example.txt", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
    const char* data = "Hello, Linux!";
    // 将数据写入文件
    ssize_t bytesWritten = write(fileDescriptor, data, strlen(data));
    // 处理写入的数据...
    close(fileDescriptor);
    return 0;
}

    int fileDescriptor = open("example.txt", O_RDWR);
    off_t offset = lseek(fileDescriptor, 5, SEEK_SET);  // 将文件指针移动到文件开头后的第 5 个字节
    // 处理文件指针位置...
    close(fileDescriptor);
    return 0;
}

    int fileDescriptor = open("example.txt", O_RDWR);
    // 其他文件 I/O 操作...
    // 关闭文件
    close(fileDescriptor);
    return 0;
}

    int fileDescriptor = open("nonexistent_file.txt", O_RDONLY);
    if (fileDescriptor == -1) {
        perror("Error opening file");
        std::cerr 
    struct stat fileInfo;
    if (stat("example.txt", &fileInfo) == 0) {
        std::cout 
        perror("Error getting file information");
    }
    return 0;
}

    int fileDescriptor = creat("newfile.txt", S_IRUSR | S_IWUSR);
    if (fileDescriptor != -1) {
        // 文件创建成功
        // 其他文件 I/O 操作...
        close(fileDescriptor);
    } else {
        perror("Error creating file");
    }
    // 删除文件
    if (unlink("newfile.txt") == 0) {
        // 文件删除成功
    } else {
        perror("Error deleting file");
    }
    return 0;
}

    // 创建目录
    if (mkdir("newdir", S_IRWXU | S_IRWXG | S_IRWXO) == 0) {
        // 目录创建成功
    } else {
        perror("Error creating directory");
    }
    // 删除目录
    if (rmdir("newdir") == 0) {
        // 目录删除成功
    } else {
        perror("Error deleting directory");
    }
    return 0;
}

    // 重命名文件
    if (rename("oldfile.txt", "newfile.txt") == 0) {
        // 文件重命名成功
    } else {
        perror("Error renaming file");
    }
    // 移动文件
    if (rename("sourcefile.txt", "targetdir/destinationfile.txt") == 0) {
        // 文件移动成功
    } else {
        perror("Error moving file");
    }
    return 0;
}
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]