C#获取本地磁盘信息

直接上干货简单易懂

原作出处:http://www.codeproject.com/useritems/tips.asp?df=100

//磁盘监控(远程/本地)
//需要引用System.Management.dll
public class RemoteMonitoring
{
private static string strMsg = “”;
private static long freesize = 0, size = 0;
private static long gb = 1024 * 1024 *
1024;//GB,这里可以自己定义获取是MB还是GB

一..Net
Framework

public static string ThreadDisk()
{
strMsg = “”;
string strHostName = Dns.GetHostName(); //取得本机的主机名
IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP
string localip = ipEntry.AddressList[0].ToString();
//假设本地主机为单网卡,取得第一个IP
try
{
long minsize = long.Parse(CommonField.minsize);
if (CommonField.ip == localip)
{
#region 本机
foreach (DriveInfo drive in DriveInfo.GetDrives())
{
if (drive.DriveType == DriveType.Fixed)
{
freesize = drive.TotalFreeSpace / gb;
size = drive.TotalSize / gb;
if (freesize <= minsize)
{
strMsg += localip + “磁盘” + drive.Name + “的可用空间为” + freesize +
“GB,请及时清理!” + System.Environment.NewLine;
}
strMsg += “磁盘” + drive.Name + “的总空间:” + size + “MB!” +
“可用空间:” + freesize + “GB!” + System.Environment.NewLine;
}
}
#endregion
}
return strMsg;
}
catch (Exception ex)
{
strMsg = ex.Message;
}
return strMsg;
}

1.  如何获得系统文件夹

}

使用System.Envioment类的GetFolderPath方法;例如:

Environment.GetFolderPath(
Environment.SpecialFolder.Personal )

2.  如何获得正在执行的exe文件的路径

1)  使用Application类的ExecutablePath属性

2)  System.Reflection.Assembly.GetExecutingAssembly().Location

3.  如何检测操作系统的版本

使用Envioment的OSVersion属性,例如:

OperatingSystem
os = Environment.OSVersion;

MessageBox.Show(os.Version.ToString());

MessageBox.Show(os.Platform.ToString());

4.  如何根据完整的文件名获得文件的文件名部分、

使用System.IO.Path类的方法GetFileName或者GetFileNameWithoutExtension方法

5.  如何通过文件的全名获得文件的扩展名

使用System.IO.Path.GetExtension静态方法

6.  Vb和c#的语法有什么不同click
here

7.  如何获得当前电脑用户名,是否联网,几个显示器,所在域,鼠标有几个键等信息

使用System.Windows.Forms.
SystemInformation类的静态属性

8.  修饰Main方法的[STAThread]特性有什么作用

标示当前程序使用单线程的方式运行

9.  如何读取csv文件的内容

通过OdbcConnection可以创建一个链接到csv文件的链接,链接字符串的格式是:”Driver={Microsoft Text
Driver (*.txt;*.csv)};Dbq=”+cvs文件的文件夹路径+”          Extensions=asc,csv,tab,txt;
Persist Security Info=False”;

创建连接之后就可以使用DataAdapter等存取csv文件了。

详细信息见此处

10.
如何获得磁盘开销信息,代码片断如下,主要是调用kernel32.dll中的GetDiskFreeSpaceEx外部方法。

 

 

图片 1public sealed class DriveInfo
图片 2图片 3图片 4{
图片 5    [DllImport(“kernel32.dll”, EntryPoint = “GetDiskFreeSpaceExA”)]
图片 6    private static extern long GetDiskFreeSpaceEx(string lpDirectoryName,
图片 7        out long lpFreeBytesAvailableToCaller,
图片 8        out long lpTotalNumberOfBytes,
图片 9        out long lpTotalNumberOfFreeBytes);
图片 10
图片 11    public static long GetInfo(string drive, out long available, out long total, out long free)
图片 12图片 13    图片 14{
图片 15        return GetDiskFreeSpaceEx(drive, out available, out total, out free);
图片 16    }
图片 17
图片 18    public static DriveInfoSystem GetInfo(string drive)
图片 19图片 20    图片 21{
图片 22        long result, available, total, free;
图片 23        result = GetDiskFreeSpaceEx(drive, out available, out total, out free);
图片 24        return new DriveInfoSystem(drive, result, available, total, free);
图片 25    }
图片 26}
图片 27
图片 28public struct DriveInfoSystem
图片 29图片 30图片 31{
图片 32    public readonly string Drive;
图片 33    public readonly long Result;
图片 34    public readonly long Available;
图片 35    public readonly long Total;
图片 36    public readonly long Free;
图片 37
图片 38    public DriveInfoSystem(string drive, long result, long available, long total, long free)
图片 39图片 40    图片 41{
图片 42        this.Drive = drive;
图片 43        this.Result = result;
图片 44        this.Available = available;
图片 45        this.Total = total;
图片 46        this.Free = free;
图片 47    }
图片 48}
图片 49

 

可以通过

DriveInfoSystem
info = DriveInfo.GetInfo(“c:”);来获得指定磁盘的开销情况

 

11.如何获得不区分大小写的子字符串的索引位置

         1)通过将两个字符串转换成小写之后使用字符串的IndexOf方法:

 

 

图片 50string strParent = “The Codeproject site is very informative.”;
图片 51
图片 52string strChild = “codeproject”;
图片 53
图片 54// The line below will return -1 when expected is 4.
图片 55int i = strParent.IndexOf(strChild);
图片 56
图片 57// The line below will return proper index
图片 58int j = strParent.ToLower().IndexOf(strChild.ToLower());
图片 59

 

        2)

  一种更优雅的方法是使用System.Globalization命名空间下面的CompareInfo类的IndexOf方法:

 

 

图片 60using System.Globalization;
图片 61
图片 62string strParent = “The Codeproject site is very informative.”;
图片 63
图片 64string strChild = “codeproject”;
图片 65// We create a object of CompareInfo class for a neutral culture or a culture insensitive object
图片 66CompareInfo Compare = CultureInfo.InvariantCulture.CompareInfo;
图片 67
图片 68int i = Compare.IndexOf(strParent,strChild,CompareOptions.IgnoreCase);
图片 69

 

.
OOPs

1.
什么是复制构造函数

  我们知道构造函数是用来初始化我们要创建实例的特殊的方法。通常我们要将一个实例赋值给另外一个变量c#只是将引用赋值给了新的变量实质上是对同一个变量的引用,那么我们怎样才可以赋值的同时创建一个全新的变量而不只是对实例引用的赋值呢?我们可以使用复制构造函数。

我们可以为类创造一个只用一个类型为该类型的参数的构造函数,如:

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注