又是一年一度的双11,购物的购物,约会的约会,秀恩爱的秀恩爱,单身汪自然不属于这三者。想想,没什么好买的。约会,秀恩爱那种更没了。前几年说,希望明年光棍节前可以脱单,结果到现在还是一个人过。诶,说多了都是泪。但是,人总是要有梦想的,希望明年光棍节前可以摆脱单身的状况。
”未将对象引用设置到对象的实例“
[flash=500,400]http://s1.knowsky.com/20160211/b1czuqh10kq02.png[/flash]
这种情况,大家都遇到过,通俗一点就是”找不到对象“,程序员经常跟”对象“打交道,却总是找不到对象,只能用new一个”对象“来自嘲了。
[flash=500,400]http://s1.knowsky.com/20160211/j04nbycsj2n02.png[/flash]
像是这种情况,更是给人10000点伤害,连Excel都嘲笑你找不到对象,还能不能让人愉快的工作了。
既然这样,在这个日子,自娱自乐自嘲一番,想必是极好的,于是就有了下面这个
[flash=500,400]http://s1.knowsky.com/20160211/h55w1bpepiz03.png[/flash]
虽然不知道该叫什么,应下景的话,那暂且叫它”my1111“
如何实现的呢,原理就是往磁盘塞一定量数据。一定量数据=目前磁盘可用空间-最后剩余可用空间
代码比较简单,直接贴出来
usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;namespaceDiskFiller
{classPRogram
{staticvoidMain(string[] args)
{
ShowDrives();//显示每个盘的信息List<FillingDrive> userInputFillingDrive = CollectUserInput();//获取输入的每个盘和要设置的可用空间Console.WriteLine("填充中");
List<string> filledFilePathList = FillDataToDrive(userInputFillingDrive);//往磁盘填充数据Console.WriteLine("填充完成");
Console.WriteLine("是否删除填充的数据(输入y表示删除):");if(Console.ReadLine().ToLower() =="y")
{
DeleteUselessData(filledFilePathList);//删除填充的数据}
}///<summary>///显示每个盘的信息///</summary>publicstaticvoidShowDrives()
{
IEnumerable<DriveInfo> fixedDiskDrives =GetFixedDiskDrives();foreach(vardriveinfixedDiskDrives)
{
Console.WriteLine("盘符:"+ drive.Name +"可用空间:"+ (drive.TotalFreeSpace >>20).ToString() +"MB");
}
}///<summary>///获取输入的每个盘和要设置的可用空间///</summary>///<returns></returns>publicstaticList<FillingDrive>CollectUserInput()
{
List<FillingDrive> fillingDriveList =newList<FillingDrive>();
Console.WriteLine("输入的格式为 盘符,设置的可用空间 \n例如: c,15 表示要设置C盘,并且设置C盘的最后可用空间是15MB");while(true)
{
Console.WriteLine("请输入,输入quit结束输入:");stringinput =Console.ReadLine();if(input.ToLower() =="quit")
{
break;
}string[] inputArray = input.Split(newchar[] {','}, StringSplitOptions.RemoveEmptyEntries);
fillingDriveList.Add(newFillingDrive()//这里没判断输入的格式是否正确{
DriveName= inputArray[0],
NewFreeSpace= Convert.ToInt64(inputArray[1]) <<20}
);
}returnfillingDriveList;
}///<summary>///往磁盘填充数据///</summary>///<param name="fillingDrives"></param>///<returns></returns>publicstaticList<string> FillDataToDrive(List<FillingDrive>fillingDrives)
{
List<string> filledFilePathList =newList<string>();foreach(variteminfillingDrives)
{
DriveInfo drive=newDriveInfo(item.DriveName);stringfilledFileName = DateTime.Now.ToString("yyyyMMddHHmmssfffffff") +".my1111";//填充数据的文件stringfilledFilePath =Path.Combine(drive.RootDirectory.FullName, filledFileName);using(FileStream fs =newFileStream(filledFilePath, FileMode.OpenOrCreate))
{//减去4096是因为设置系统盘时,最后的结果总是多填充了4096字节,所以这里少填充4096字节longfillingSpace = drive.TotalFreeSpace - item.NewFreeSpace -4096;
fs.SetLength(fillingSpace);
}
filledFilePathList.Add(filledFilePath);
}returnfilledFilePathList;
}///<summary>///删除填充的数据///</summary>///<param name="filledFilePathList"></param>publicstaticvoidDeleteUselessData(List<string>filledFilePathList)
{foreach(varpathinfilledFilePathList)
{
File.Delete(path);
}
}///<summary>///获取磁盘///</summary>///<returns></returns>internalstaticIEnumerable<DriveInfo>GetFixedDiskDrives()
{
DriveInfo[] totalDrives=DriveInfo.GetDrives();
IEnumerable<DriveInfo> fixedDiskDrives = totalDrives.Where(p => p.DriveType ==DriveType.Fixed);returnfixedDiskDrives;
}publicclassFillingDrive
{///<summary>///盘符///</summary>publicstringDriveName {get;set; }///<summary>///填充到指定大小///</summary>publiclongNewFreeSpace {get;set; }
}
}
}
运行前,看下各盘的的情况,还需要给一个干净的运行环境,防止其他软件在磁盘生成数据文件,造成最后结果不准确。
[flash=500,400]http://s1.knowsky.com/20160211/p3y4obx5u0v03.png[/flash]
执行
[flash=500,400]http://s1.knowsky.com/20160211/oobxlhuvtjz03.png[/flash]
输入各盘最后可用空间,输入quit结束输入
[flash=500,400]http://s1.knowsky.com/20160211/k3ukgq4ovxc03.png[/flash]
按回车,看到“填充完成”表示已经填完了
[flash=500,400]http://s1.knowsky.com/20160211/yolsnhwjde103.png[/flash]
接下来,看下各盘的情况
[flash=500,400]http://s1.knowsky.com/20160211/zdfwibqgqc103.png[/flash]
可以看到各盘可用空间是输入的剩余可用空间大小
各盘生成了一个后缀名为“my1111”的文件,比如,这里的E盘
[flash=500,400]http://s1.knowsky.com/20160211/srpulm0jycx04.png[/flash]
看完结果后,输入”y”删除填充的文件,可以看到空间又回来了,如果输入了其它,程序会退出,填充的文件只能手动删,
删除后缀是“my1111”的文件就可以了。
[flash=500,400]http://s1.knowsky.com/20160211/btyrvjfim5v04.png[/flash]
最后,祝各位1111快乐。