前言
平時我們寫一些類或者方法時,經常需要一些常常寫但是又重複的代碼,比如一些排序算法,文件操作,一般我們可以打個jar包導入使用,如果只需要用到jar包的部分代碼,打jar包就顯得沒必要了。
於是筆者自己做了這樣一個小工具,方便管理一些代碼片段,後續會不斷更新,也希望道友們多多指教。
源碼地址:https://gitee.com/nonoas/QuickCode
功能簡介
更新內容
1.更新了jpoenix界面風格;
2.修復了打開目錄中存在無後綴名的文件導致軟件崩潰的問題;
3.增加了切換工作區間的功能。
使用方法
功能比較簡單:
1.新建分類;
2.新建代碼文件;
3.點擊複製可直接將代碼內容複製到剪切板。
下載鏈接
複製這段內容後打開百度網盤手機App,操作更方便哦
軟件鏈接:
https://pan.baidu.com/s/13DwYMoxQj8AQR3R1mQnbaQ
提取碼: jexd
JRE 1.8.131:
https://pan.baidu.com/s/1YLtvyhsQ_d7HHJbE_uCT6g
提取碼: 5gc5
(如果您的電腦上沒有運行環境 jre1.8.131,請下載該jre解壓到軟件的啓動程序相同目錄下)
開發技術
開發環境: eclipse,IDEA
編程語言: Java
算法源碼
1.生成目錄
使用遞歸算法,生成文件目錄的TreeView
/**
* 創建文件夾目錄
*
* @param path 父文件夾路徑
*/
private void buidContentTree(String path, TreeItem<String> rootItem) {
File[] files = new File(path).listFiles();
if (files == null)
return;
for (File file : files) {
if (file.isFile() && isSupportedType(FileUtil.getFileType(file))) { // 創建文件節點
ImageView file_icon = new ImageView(MyIcons.IMG_FILE);
file_icon.setFitHeight(16);
file_icon.setFitWidth(14);
TreeItem<String> item = new TreeItem<>(file.getName(), file_icon);
rootItem.getChildren().add(item);
} else if (file.isDirectory()) { // 創建文件夾節點
ImageView dir_icon = new ImageView(MyIcons.IMG_FOLDER_CLOSE);
dir_icon.setFitHeight(16);
dir_icon.setFitWidth(16);
TreeItem<String> item = new TreeItem<>(file.getName(), dir_icon);
rootItem.getChildren().add(item);
buidContentTree(file.getAbsolutePath(), item); // 遞歸創建子文件夾內的節點
}
}
}
2.查找文件
使用深度優先算法
/**
* 查找TreeView對應的item
*
* @param item 查找的對象節點
* @param keyWord 查找的關鍵字
* @return 目標節點
*/
private TreeItem<String> findTreeItem(TreeItem<String> item, String keyWord) {
Pattern regex = Pattern.compile(keyWord);
ObservableList<TreeItem<String>> childItems = item.getChildren();
for (TreeItem<String> childItem : childItems) {
if (childItem.isLeaf() && regex.matcher(childItem.getValue()).find())
return childItem;
TreeItem<String> aimItem = findTreeItem(childItem, keyWord); // 遞歸搜索子文件夾
if (aimItem != null)
return aimItem; // 如果不爲null則返回找到的item
}
return null;
}