1. 程式人生 > >Java實現WC.exe功能

Java實現WC.exe功能

standard 字符串 alt 子目錄 目錄 rev 控制字符 例如 能夠

1 WC 項目要求

項目地址:https://github.com/LIBULULU/yy

wc.exe 是一個常見的工具,它能統計文本文件的字符數、單詞數和行數。這個項目要求寫一個命令行程序,模仿已有wc.exe 的功能,並加以擴充,給出某程序設計語言源文件的字符數、單詞數和行數。

實現一個統計程序,它能正確統計程序文件中的字符數、單詞數、行數,以及還具備其他擴展功能,並能夠快速地處理多個文件。

具體功能要求:
程序處理用戶需求的模式為:

wc.exe [parameter] [file_name]

基本功能列表:

wc.exe -c file.c //返回文件 file.c 的字符數 (實現)

wc.exe -w file.c //返回文件 file.c 的詞的數目 (實現)

wc.exe -l file.c //返回文件 file.c 的行數(實現)


擴展功能:
-s 遞歸處理目錄下符合條件的文件。(未實現)
-a 返回更復雜的數據(代碼行 / 空行 / 註釋行)。

空行:本行全部是空格或格式控制字符,如果包括代碼,則只有不超過一個可顯示的字符,例如“{”。

代碼行:本行包括多於一個字符的代碼。

註釋行:本行不是代碼行,並且本行包括註釋。一個有趣的例子是有些程序員會在單字符後面加註釋:

} //註釋
在這種情況下,這一行屬於註釋行。

[file_name]: 文件或目錄名,可以處理一般通配符。

高級功能:

-x 參數。這個參數單獨使用。如果命令行有這個參數,則程序會顯示圖形界面,用戶可以通過界面選取單個文件,程序就會顯示文件的字符數、行數等全部統計信息。

需求舉例:
  wc.exe -s -a *.c


返回當前目錄及子目錄中所有*.c 文件的代碼行數、空行數、註釋行數。

PSP

PSP2.1Personal Software Process Stages預估耗時(分鐘)實際耗時(分鐘)
Planning 計劃 40 60
· Estimate · 估計這個任務需要多少時間 30 45
Development 開發 60 50
· Analysis · 需求分析 (包括學習新技術) 300 600
· Design Spec · 生成設計文檔 30 50
· Design Review · 設計復審 (和同事審核設計文檔) 30 40
· Coding Standard · 代碼規範 (為目前的開發制定合適的規範) 10 15
· Design · 具體設計 60 50
· Coding · 具體編碼 220 360
· Code Review · 代碼復審 30 40
· Test · 測試(自我測試,修改代碼,提交修改) 100 210
Reporting 報告 80 120
· Test Report · 測試報告 60 70
· Size Measurement · 計算工作量 30 40
· Postmortem & Process Improvement Plan · 事後總結, 並提出過程改進計劃 20 100
合計 1100 1850

遇到的困難及解決方法

1、項目開始前:本身基礎就比較差,在項目開始前花了很長一部分時間去復習java的相關基礎。

2、項目進行中:在項目設計過程中,本身這個項目對我來說比較吃力,我通過在網上查閱類似的項目類型,以及向同學請教,首先第一步搞懂了大概的項目流程,在程序進行過程中,學習了正則表達式,以及學習了I/O接口裏面的bufferreader來讀取文件,還學習了String類等。

3、項目結束後:在項目結束後將程序push到github上前,在網上對GIT進行了一個不太系統的學習,導致後面實踐,創建鑰匙的時候,出現很多問題,最後通過請假以及在網上查找學習,得以解決

設計說明

技術分享圖片

首先通過I/O流讀取文件

(1)、字符數的統計:

思路:通過BufferedReader讀入,通過String賦值,用一個readline按行讀取,最後字符串的長度就是字符的數量。

技術分享圖片

(2)、行數統計:

思路:通過BufferedReader讀入,用一個readline按行讀取。

技術分享圖片

(3)、詞數統計

思路:通過BufferedReader讀入,將按行讀入的內容通過Striing賦值給l,分割,通過正則表達式得到單詞數

技術分享圖片

(4)程序實現

思路:通過File.exists訪問文件,用switch實現幾個功能的選擇。

技術分享圖片

測試結果:

技術分享圖片技術分享圖片技術分享圖片

代碼覆蓋率

技術分享圖片

總結:

從一開始拿到程序,到結束程序,拓展功能和高級功能都未能實現,其中在拓展功能中的空行,代碼行,註釋行,一直在嘗試當中,最後到提交都未能實現,是有些遺憾,但通過此次程序的編寫,我對java有了更深刻的學習,相比於之前,對String,I/O接口,正則表達式等等java典型常用的知識點有了一個跟為詳細的學習。

不足:在這次實踐中,只實現了基礎功能,希望把這個程序不會的地方多請教其他同學,接著把這個程序完成。

Java實現WC.exe功能