91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

利用C++ truncate實現文件備份的技巧

c++
小樊
86
2024-09-10 18:47:22
欄目: 編程語言

在C++中,你可以使用truncate()函數來實現文件備份

#include<iostream>
#include <fstream>
#include <cstring>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>

bool backupFile(const std::string &src, const std::string &dst) {
    int src_fd = open(src.c_str(), O_RDONLY);
    if (src_fd == -1) {
        std::cerr << "Error opening source file: "<< strerror(errno)<< std::endl;
        return false;
    }

    int dst_fd = open(dst.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0644);
    if (dst_fd == -1) {
        std::cerr << "Error opening destination file: "<< strerror(errno)<< std::endl;
        close(src_fd);
        return false;
    }

    struct stat st;
    fstat(src_fd, &st);
    off_t size = st.st_size;

    sendfile(dst_fd, src_fd, nullptr, size);

    close(src_fd);
    close(dst_fd);

    return true;
}

int main() {
    std::string src_file = "source.txt";
    std::string dst_file = "backup.txt";

    if (backupFile(src_file, dst_file)) {
        std::cout << "File backup successful!"<< std::endl;
    } else {
        std::cerr << "File backup failed."<< std::endl;
    }

    return 0;
}

這個示例中的backupFile()函數接受兩個參數:源文件路徑(src)和目標文件路徑(dst)。函數首先打開源文件并獲取其文件描述符(src_fd),然后創建或打開目標文件并獲取其文件描述符(dst_fd)。接下來,使用sendfile()函數將源文件的內容復制到目標文件。最后,關閉源文件和目標文件的文件描述符。

main()函數中,我們調用backupFile()函數來備份一個名為source.txt的文件到一個名為backup.txt的文件。如果備份成功,程序將輸出"File backup successful!“,否則輸出"File backup failed.”。

0
闸北区| 姚安县| 大埔区| 绥阳县| 达拉特旗| 吉木萨尔县| 毕节市| 博白县| 义乌市| 鸡东县| 黎平县| 磴口县| 沙坪坝区| 石柱| 大兴区| 乐昌市| 内丘县| 三台县| 夹江县| 永福县| 巫溪县| 施秉县| 长乐市| 泰安市| 武汉市| 永胜县| 麻江县| 绥化市| 成安县| 会宁县| 抚远县| 客服| 重庆市| 镇远县| 海门市| 喀喇| 海南省| 洪泽县| 万安县| 明水县| 麻江县|