亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

关岭| 乌兰察布市| 驻马店市| 兴业县| 五大连池市| 峨眉山市| 南部县| 德州市| 保德县| 新源县| 修武县| 大名县| 郓城县| 安多县| 友谊县| 大方县| 江华| 溧水县| 瓮安县| 牙克石市| 阳新县| 郴州市| 湛江市| 博爱县| 青田县| 图们市| 广元市| 西华县| 中阳县| 徐水县| 灌阳县| 枣庄市| 阜新市| 若羌县| 太康县| 淳安县| 黄大仙区| 壤塘县| 襄汾县| 临桂县| 青河县|