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

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++解壓與文件訪問控制

發布時間:2024-10-30 16:22:46 來源:億速云 閱讀:81 作者:小樊 欄目:編程語言

在C++中,我們可以使用標準庫中的<fstream>頭文件來處理文件的解壓和訪問控制

  1. 引入頭文件:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
  1. 解壓文件:

假設我們有一個簡單的ZIP文件,其中包含兩個文本文件。我們可以使用以下代碼來解壓它們:

bool Unzip(const std::string& zipFilePath, const std::string& destDirectory) {
    std::ifstream zipFile(zipFilePath, std::ios::binary);
    if (!zipFile) {
        std::cerr << "無法打開ZIP文件: " << zipFilePath << std::endl;
        return false;
    }

    std::string fileName;
    while (getline(zipFile, fileName)) {
        std::string filePath = destDirectory + "/" + fileName;
        if (fileName.back() == '/') {
            if (!std::filesystem::create_directory(filePath)) {
                std::cerr << "無法創建目錄: " << filePath << std::endl;
                return false;
            }
        } else {
            std::ifstream outFile(filePath, std::ios::binary);
            if (!outFile) {
                std::ofstream newFile(filePath, std::ios::binary | std::ios::trunc);
                if (!newFile) {
                    std::cerr << "無法創建文件: " << filePath << std::endl;
                    return false;
                }
            }

            char buffer[1024];
            while (zipFile.read(buffer, sizeof(buffer))) {
                if (!outFile) {
                    outFile.write(buffer, zipFile.gcount());
                } else {
                    newFile.write(buffer, zipFile.gcount());
                }
            }

            if (outFile) {
                outFile.close();
            } else {
                newFile.close();
            }
        }
    }

    zipFile.close();
    return true;
}
  1. 文件訪問控制:

為了控制文件的訪問,我們可以使用std::filesystem庫中的std::filesystem::file_permissionsstd::filesystem::set_file_permissions函數。以下是一個示例,展示了如何更改文件的讀、寫和執行權限:

#include <filesystem>

void SetFilePermissions(const std::string& filePath, std::filesystem::permissions perm) {
    std::filesystem::path path(filePath);
    std::filesystem::set_file_permissions(path, perm);
}

int main() {
    std::string zipFilePath = "example.zip";
    std::string destDirectory = "extracted_files";

    if (Unzip(zipFilePath, destDirectory)) {
        std::cout << "解壓成功!" << std::endl;
    } else {
        std::cerr << "解壓失敗!" << std::endl;
        return 1;
    }

    std::string filePath = destDirectory + "/example_file.txt";
    SetFilePermissions(filePath, std::filesystem::permissions::owner_read | std::filesystem::permissions::owner_write);
    SetFilePermissions(filePath, std::filesystem::permissions::group_read | std::filesystem::permissions::group_write);
    SetFilePermissions(filePath, std::filesystem::permissions::others_read);

    std::cout << "文件權限已更改。" << std::endl;

    return 0;
}

這個示例首先解壓ZIP文件,然后更改解壓后文件的讀、寫和執行權限。請注意,這個示例僅適用于支持C++17及更高版本的標準庫。如果你的編譯器不支持C++17,請確保更新編譯器或使用其他方法來實現相同的功能。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

揭东县| 沙湾县| 阿克陶县| 三门峡市| 军事| 庄河市| 盐边县| 祁门县| 宝清县| 疏附县| 寿阳县| 陵水| 东明县| 东辽县| 青海省| 蒙阴县| 固安县| 合山市| 黔南| 林甸县| 中山市| 平山县| 南宁市| 兴海县| 邢台市| 武强县| 航空| 屏南县| 宝山区| 邛崃市| 云安县| 涪陵区| 普宁市| 奉贤区| 金坛市| 大同市| 和田市| 开平市| 溧水县| 武强县| 都匀市|