做个小命令而已 至于那么纠结么

文件文件都以要配备到服务器的,DOS
mode究竟是非凡的。可每趟等到服务器传输时再自动转,也不是很保证,因为有时候文件夹中间稍微jar文件,有时还某些xls文件,不能够乱转。

于是想本身写个Dos2Unix4Win。差不多一年了都,纵然平日没空搞私活,但好歹做过三个本子,为何还是不太可靠吗。

【第一版】

首先版是纯Java,MVC分层或许实际上只是VC分层。

主导其实很简短,文件用FileReader直接readLine(),直接依附换行符就FileWriter写出文件。

下一场也提供了命令行直接运转的措施,输入源文件、指标路径,就足以处理了。因为想帮助目录操作,所以设置了文件类型的过滤配置。

可就是图形界面方木槿了很多年华,用Swing,晦涩难用,工具又不协助,做出来效果不好看。

在组里分享出去,结果没人用,大抵是因为互相界面不友好,还不如用FTP工具传上去再下回到。

没人用也就先放那儿吧。可是直到有一天,小编本人索要使用,便拿出来,结果发现。。。目录穷举根本没做好,根本就是个垃圾。。。

更要紧的是新兴,捣腾了个Window
Builder,能轻轻松松消除UI难题。才考虑做第叁版。

【第二版】

模块1,单个文件转换,间接抄在此以前的。

模块2,单元测试组件。因为想用比较偏向TDD的主意来做,所以部分先搭起了测试用例。

模块3,界面。因为此次的界面工具很强力,所以想先从界面出手,其实想做成个界面小应用。WB其实是Eclipse的2个插件,所以这一次基本上就是在Java上像.NET一样写界面。也放弃了猥琐的Swing,而接纳了精彩顺滑的SWT。
(Standard Widget
Toolkit,一来使用原生窗口所以柔顺丝滑如潘婷的广告一般,二来其安排真正要优于Swing/AWT。布局管理器更压实烈和灵活,事件多数装进成widgetDefaultSelected(Selection伊芙nt
arg0)调用方便,还有如Tree和DirectoryDialog等尤其常用卓殊实用的零件。)

模块4,文件夹遍历。这一块直接用了递归,要说能够算是深度优先遍历。本来打算边递归边把公文处理掉,但思想递归里做太多事不佳,于是只是获取列表,再次回到二个File类型的ArrayList。当时也考虑过LinkedList,不过只须求遍历,链表此时没啥优势,反而耗财富。

模块5,Controller层面包车型客车黑盒测试。设计了三个用例。
1.单文件处理,没啥特别;
2.单文件处理,文件相比大(用了个100MB的压缩包);
3.目录处理,有多少层子目录,但都不曾公文;
4.目录处理,压力测试,至少十层子目录;
5.目录处理,压力测试,文件数量极度多(直接用了某些档案目录,共700四个公文)。
就算如此还不是最完整的,但覆盖了多数状态了。而且都以用来处理平时文书,完全不考虑访问权限的情景了。

模块6,容错及日志处理。容错一始发就有在意,空值判断等都有做,所以基本上都是IOException层层往外抛,在最外层处理。日志是配了log4j,但还没决定哪些地点要记录。

模块7,文件过滤处理(白名单黑名单)。还没做。

现状是中央作用都写完了,基本能用了,于是导出了1个可进行jar文件在外侧跑。于是杯具发生了,因为调用了SWT库,整个包臃肿达16MB。。。这么不难的成效,居然大到用邮件发不出去!(邮箱限制了4MB附属类小部件。)

于是乎作者又陷入迷茫了。。。本人凭空想象的要求,总有点卓殊尤其的。。。小程序没有团结界面是没人用的,不过那样臃肿,传输也不行不便于的。。。毕竟,能从哪些地方初叶吧?

相关文章