C#的库

在开发照片索引器过程中,遇到TooLong路径问题及内存溢出错误。通过使用堆栈替代递归,并限制路径长度,成功解决问题。此外,还讨论了如何获取文件属性如创建日期、尺寸等。

放着好好的。net和m$ 的二进制不用 为什么要用第三方库?

真相是,好吧 今天打算顺手写一个照片Indexer 也就是不需要翻硬盘就能浏览320×240 的图片概览

当然一开始我从目录递归开始做,这样只需要一个函数FindInFolder 它从当前目录下翻出图像文件然后,列出所有目录再对每个目录进行同样的操作, 单元测试 OutOfMemory Exception,用两个硬盘测试分别在600ms , 900ms出错

于是我就把递归改写成压栈和出栈操作,这样避免了内存异常但是50ms不到就爆出了PathTooLongException 著名的异常 查了一下so 网站然后试了一下第三个答案delimon.win32.io 很可惜这个库并没有GetFiles 的3参数重载于是对我来说就没用,因为我要获取图片的创建日期,尺寸,以及byte字节数,于是把它从系统里删除掉

去上个厕所,忽然想为什么要弄TooLong 的名字呢

我可以把所有照片手动整理到根文件夹下不就解决了吗 何必费周章

从程序里也可以相应的做限制,控制路径字符串的长度,当前路径Length超过200字节就忽略去不再压栈,像这样       

   if (di.FullName.Length < 200)

          {
            stack_dir.Push(di);  // 将子节点入栈  

          }

这样就"完美"的解决了bug

其实有很多可以try catch 的措施但是我都没有用,NotAuthorized 异常不要去访问系统目录 38秒崩溃

6秒出现GDI+ 错我估计是我用了net 4.5 接口访问了图片造成它,不行的话就不要尺寸了吧 有文件大小也行啊

有方案,这就是完美

C#基础类 1.Chart图形 Assistant创建显示图像的标签和文件 OWCChart统计图的封装类 2.Cookie&Session;&Cache;缓存帮助类 CacheHelper C#操作缓存的帮助类,实现了怎么设置缓存,怎么取缓存,怎么清理缓存等方法,只需要调用方法就可以实现 CookieHelper C#操作Cookie的帮助类,添加Cookie,删除Cookie,修改Cookie,清理Cookie SessionHelper C#关于Session的操作,获取Session,设置Session,删除Session使用方便,只需要调用方法就可以了 SessionHelper2 C#关于Session的一些高级操作,比如取Session对象,取Session数据等等 3.CSV文件转换 CsvHelper CSV文件导入DataTable和DataTable导出到Csv文件等操作 4.DEncrypt 加密/解密帮助类 DEncrypt C#DEncrypt加密/DEncrypt解密帮助类 ,多种方式,可以设置Key DESEncrypt C#DESEncrypt加密/DESEncrypt解密帮助类 ,多种方式,可以设置Key Encrypt C#Encrypt--Encrypt加密/Encrypt解密/附加有MD5加密,个人感觉很不错的一个加密类 HashEncode 哈希加密帮助类,得到随机哈希加密字符串,随机哈希数字加密等 MySecurity MySecurity--Security安全加密/Security Base64/Security文件加密,以及一些常用的操作方法 RSACryption RSACryption--RSA加密/RSA解密字符串 RSA加密应用最多是银行接口,这里的方法可以直接使用哦 5.FTP操作类 FTPClient   FTPClient--FTP操作帮助类,FTP上传,FTP下载,FTP文件操作,FTP目录操作 FTPHelper FTPHelper-FTP帮助类,FTP常用操作方法,添加文件,删除文件等 FTPOperater FTP操作帮助类,方法比较多,比较实用 6.JS操作类 JsHelper JsHelper--Javascript操作帮助类,输出各种JS方法,方便不懂JS的人使用,减少代码量 7.JSON 转化类 ConvertJson List转成Json|对象转成Json|集合转成Json|DataSet转成Json|DataTable转成Json|DataReader转成Json等 8.Mime MediaTypes 电子邮件类型帮助类,规定是以Xml,HTML还是文本方式发送邮件 MimeEntity Mime实体帮助类 MimeHeaders mime的Header帮助类 MimeReader mime读取帮助类 QuotedPrintableEncoding mimeEncoding帮助类 9.PDF 转化类 PDFOperation PDFOperation--C#PDF文件操作帮助类 类主要功能有1.构造函数2.私有字段3.设置字体4.设置页面大小 5.实例化文档6.打开文档对象7.关闭打开的文档8.添加段落9.添加图片10.添加链接、点 等功能 10.ResourceManager 操作类 AppMessage app消息格式化类,返加字符串帮助类 ResourceManager C#一个操作Resource的帮助类 ResourceManagerWrapper Resources 操作Resources的帮助类,使用Api的方式 Sample.xml 11.XML操作类 XmlHelper 操作Xml文档的帮助类,主要是添加,删除,修改,查询节点的操作和操作后进行保存的功能。 XMLProcess 操作Xml文档的帮助类,主要是添加,删除,修改,查询节点的操作的功能。 12.弹出消息类 MessageBox JS弹出信息帮助类 ShowMessageBox 相对于MessageBox更丰富的提示类 13.导出Excel 操作类 DataToExcel
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值