C#的库

3 篇文章 0 订阅

放着好好的。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 接口访问了图片造成它,不行的话就不要尺寸了吧 有文件大小也行啊

有方案,这就是完美

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值