• c# 读取所有磁盘的剩余空间


    介绍:

      有一个控制台命令是创建指定大小的空文件,因此我想制作一个一键填充剩余磁盘空间的坑人小程序。

      想要填充剩余容量,就要先获取所有本地磁盘的剩余空间,这个程序就是用来做这个的。

    项目类型为c#控制台,程序源码全部如下:

    注意System.Management这个命名空间只用using引入是没有用的,还要手动去引用程序集。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    using static System.Console;
    using System.Management;//需要手动添加程序集的引用,这里的引用不是指命名空间的导入!
    
    namespace ConsoleApp3
    {
        class Program
        {
            static void Main(string[] args)
            {
                Program aa = new Program();
                foreach(string s in aa.GetRemovableDeviceID())
                {
                    long freespace = aa.GetHardDiskSpace(s);
                    WriteLine(s+" "+ (freespace-1) +" GB");//向下取整并-1GB
                }
    
                ReadKey();
            }
    
            //单位GB
            public long GetHardDiskSpace(string str_HardDiskName)
            {
                long totalSize = 0;
                str_HardDiskName = str_HardDiskName + "\\";
                DriveInfo[] drives = DriveInfo.GetDrives();
                foreach (DriveInfo drive in drives)
                {
                    if (drive.Name == str_HardDiskName)
                    {
                        totalSize = drive.TotalFreeSpace / (1024 * 1024 * 1024);
                    }
                }
                return totalSize;
            }
    
    
            public List<string> GetRemovableDeviceID()
            {
                List<string> deviceIDs = new List<string>();
                ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT  *  From  Win32_LogicalDisk ");
                ManagementObjectCollection queryCollection = query.Get();
                foreach (ManagementObject mo in queryCollection)
                {
    
                    switch (int.Parse(mo["DriveType"].ToString()))
                    {
                        case (int)DriveType.Removable:   //可以移动磁盘     
                            {
                                //MessageBox.Show("可以移动磁盘");
                                deviceIDs.Add(mo["DeviceID"].ToString());
                                break;
                            }
                        case (int)DriveType.Fixed:   //本地磁盘     
                            {
                                //MessageBox.Show("本地磁盘");
                                deviceIDs.Add(mo["DeviceID"].ToString());
                                break;
                            }
                        default:   //defalut   to   folder     
                            {
                                //MessageBox.Show("驱动器类型未知 ");
                                break;
                            }
                    }
    
                }
                return deviceIDs;
            }
    
        }
    }

    程序运行结果如下:

  • 相关阅读:
    Java实现 蓝桥杯 历届试题 网络寻路
    Joda-Time 简介
    Eclipse自动生成返回值对象的快捷键是什么?
    eclipse中使用Maven管理java工程设置jdk版本为jdk1.8
    Windows10系统下,彻底删除卸载MySQL
    win10 安装 mysql解压版安装步骤
    使用MySQL Workbench建立数据库,建立新的表,向表中添加数据
    ubuntu安装mysql可视化工具MySQL-workbench及简单操作
    MySQL Linux压缩版安装方法
    【Linux】MySQL解压版安装及允许远程访问
  • 原文地址:https://www.cnblogs.com/pta00/p/15938225.html
Copyright © 2020-2023  润新知