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 += "\nFile 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 += "\n FreeSpace: " + propValue;
    }

    auto propValue2 = extraProperties->Lookup(L"System.Capacity");
    if (propValue2 != nullptr)
    {
        *outputText += "\n Capacity: " + propValue2;
    }
});

 

转载于:https://www.cnblogs.com/hebeiDGL/p/5893532.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值