(1)Gitee项目源码,exe文件地址:https://gitee.com/zy1054988241/WcProject

(2)解题思路:

   1.拿到这个题目有关文件字符读取,写入。就和文件操作必不可分,于是将java.io章节仔细的研究,将一些可能使用的类,对象仔细研究。当大概的知道要使用哪些类时,将这些类的方法仔细通读jdk源码然后开始尝试着编写功能。

    2.对于第一个功能读取行数,我的操作就是创建文件,创建FileReader对象,然后使用对象的readLine()方法读取一行内容,当不为空时继续执行,判断行数就很快。

    3.第二个功能就是字符数,我的方法是将获取的每行字符串通过一个新的可变字符串全部贮存起来,然后通过字符串遍历记录字符数.

    4.第三个功能我的思路是将获得可变字符串通过split方法分割,这里对正则表达式要求较高,所以学习了正则表达式

    5.基本功能实现后,就开始将java文件打成jar包,操作较为简单,然后使用java -jar命令执行以下内容  

    6.将jar包打成exe文件,借助了exe4j这个工具,这个工具优点是不但能打包,还能将运行环境一起打包捆绑

    7.初步操作实现后,开始按格式传递参数,在网上找了博客研究怎么传参,最后实现了这一功能。

 

(3)设计思路,使用了三个函数,主函数main,  文件判断函数cutString,文件读取函数fileWriter,文件写入函数fileReader,单词记录函数sum,关系就是主函数传参,然后判断,然后看情况调用。

(4)关键代码展示和注释

        //通过main函数传入可读文件绝对路径,并且创建文件
        File file=new File(args[1]);
        
        int count=0;//行数
        
        int count1=0;//单词数
        
        int sumLength=0;//字符总数
        
        String str="";//用于行数判断的空字符串
        
        StringBuffer sb=new StringBuffer();//定义拼接的可变字符串
        
        String str1;//定义用于转换最后拼接成的字符串
        
        try {
            FileReader fr=new FileReader(file);//创建文件读取对象
            BufferedReader bfr=new BufferedReader(fr);//创建有缓冲的文件对象
            if((str=bfr.readLine())!=null) {//按行读取内容
                sb.append(str);             //将每行字符串拼接起来
                count++;//记录行数
            }
            str1=new String(sb);
            String [] arr = str1.split("\\s+|\\,|\\,");//通过正则表达式分割字符串
            for(String ss:arr) {
                count1++;//记录单词数
            }
            sumLength=str1.length();
            
        } catch (FileNotFoundException e) {//捕捉文件异常
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

(5)设计测试用例

1.使用jar包,将命令正确的输入结果

 

2.命令位数正确,内容错误情况

3.命令位数不同,发现错误,并记录是几位数是多少

4.对文件进行改变,看是否值变化们是否报错

 

 5.jar文件错误

6.新增统计单词个数功能

 

7.打包成exe文件成果并同样判断是否正确

 

8.同理参数多于定义传入的参数数组大小

 

(6)参考文献链接

参考资料文献:JDK源码:https://blog.csdn.net/limm33/article/details/79259220

       java正则表达式:http://www.runoob.com/java/java-regular-expressions.html

       java.io详解博客:https://blog.csdn.net/annotation_yang/article/details/78397239

       java打成jar包:https://blog.csdn.net/qq_38571398/article/details/78883623

       jar打成exe包:https://blog.csdn.net/zhangdaiscott/article/details/46988003