• 16、C++获取磁盘空间的方法


    使用 C# 获取磁盘空间的方法:

     public async static Task<int> GetFreeSpace()
     {
         StorageFolder localFolder = ApplicationData.Current.LocalFolder;
         var properties = await localFolder.GetBasicPropertiesAsync();
         var filteredProperties = await properties.RetrievePropertiesAsync(new[] { "System.FreeSpace" });
         string freeSpace = filteredProperties["System.FreeSpace"].ToString();
         ulong size;
         int mb = 0;
         if (ulong.TryParse(freeSpace, out size))
             mb = (int)(size / (1024 * 1024));
    
         return mb;
     }

    不过使用 C++ 比较麻烦,在网页上没有搜到,在微软 Github-(https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples) 上的 demo(FileAccess)中,找到了使用方式,改造了一下:

    auto folder = Windows::Storage::ApplicationData::Current->LocalFolder;
    
    auto outputText = std::make_shared<String^>("Space: " + folder->Name);
    
    // Get basic properties
    create_task(folder->GetBasicPropertiesAsync()).then([this, outputText](task<BasicProperties^> task)
    {
        try
        {
            BasicProperties^ basicProperties = task.get();
            *outputText += "
    File size: " + basicProperties->Size.ToString() + " bytes";
        }
        catch (COMException^ ex)
        {
            //rootPage->HandleFileNotFoundException(ex);
        }
    }).then([this, folder]()
    {
        // Get extra properties
        auto propertiesName = ref new Vector<String^>();
        propertiesName->Append(L"System.FreeSpace");
        propertiesName->Append(L"System.Capacity");
    
        return folder->Properties->RetrievePropertiesAsync(propertiesName);
    }).then([this, outputText](IMap<String^, Object^>^ extraProperties)
    {
        auto propValue = extraProperties->Lookup(L"System.FreeSpace");
        if (propValue != nullptr)
        {
            *outputText += "
     FreeSpace: " + propValue;
        }
    
        auto propValue2 = extraProperties->Lookup(L"System.Capacity");
        if (propValue2 != nullptr)
        {
            *outputText += "
     Capacity: " + propValue2;
        }
    });
  • 相关阅读:
    hdu4651(广义五边形数 & 分割函数1)
    Java基础面试题1
    Java8新特性--Lambda表达式
    Java中list在循环中删除元素的坑
    Java多线程面试题整理
    Java并发包--ConcurrentHashMap原理解析
    HashMap原理解析
    Java原子类--AtomicLongFieldUpdater
    Java原子类--AtomicReference
    Java原子类--AtomicLongArray
  • 原文地址:https://www.cnblogs.com/hebeiDGL/p/5893532.html
Copyright © 2020-2023  润新知