Java實(shí)現(xiàn)統(tǒng)計(jì)文件夾下所有文件的字?jǐn)?shù)
統(tǒng)計(jì)文件夾下所有.md文件的字?jǐn)?shù)
示例代碼
import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; import java.util.regex.Pattern; public class WordCounter { private static final Pattern WORD_PATTERN = Pattern.compile("[a-zA-Z]+|[\u4e00-\u9fa5]"); private static long totalWords = 0; public static void main(String[] args) throws IOException { Path startPath = Paths.get("path/to/your/directory"); // replace with your directory Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { if (file.toString().endsWith(".md")) { totalWords += countWords(file); } return FileVisitResult.CONTINUE; } private long countWords(Path file) throws IOException { long count = 0; try (BufferedReader reader = Files.newBufferedReader(file, StandardCharsets.UTF_8)) { String line; while ((line = reader.readLine()) != null) { count += WORD_PATTERN.split(line).length; } } return count; } @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) { System.out.println("Visited directory: " + dir + ", total words: " + totalWords); return FileVisitResult.CONTINUE; } }); System.out.println("Total words in all .md files: " + totalWords); } }
方法補(bǔ)充
除了上文的方法,小編還為大家整理了其他實(shí)現(xiàn)統(tǒng)計(jì)文件字?jǐn)?shù)的方法,希望對(duì)大家有所幫助
Java統(tǒng)計(jì)文檔的字?jǐn)?shù)
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class WordCount { public static void main(String[] args) { // 讀取文檔路徑 String filePath = "path/to/your/document.txt"; try { // 創(chuàng)建文件對(duì)象 File file = new File(filePath); // 創(chuàng)建Scanner對(duì)象,用于讀取文件內(nèi)容 Scanner scanner = new Scanner(file); // 統(tǒng)計(jì)字符個(gè)數(shù)的變量 int count = 0; // 逐行讀取文件內(nèi)容,并統(tǒng)計(jì)字符個(gè)數(shù) while (scanner.hasNextLine()) { String line = scanner.nextLine(); count += line.replaceAll("\\s+", "").length(); } // 輸出統(tǒng)計(jì)結(jié)果 System.out.println("文檔的字?jǐn)?shù)是:" + count); // 關(guān)閉Scanner對(duì)象 scanner.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
Java獲取文件字?jǐn)?shù)
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class WordCount { public static void main(String[] args) { String filename = "example.txt"; // 替換為要統(tǒng)計(jì)字?jǐn)?shù)的文件路徑 int wordCount = 0; int spaceCount = 0; int punctuationCount = 0; try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { String line; while ((line = reader.readLine()) != null) { String[] words = line.split("\\s+"); wordCount += words.length; spaceCount += words.length - 1; for (char c : line.toCharArray()) { if (Character.isWhitespace(c)) { spaceCount++; } else if (Character.isLetterOrDigit(c) || Character.isSpaceChar(c)) { // do nothing } else { punctuationCount++; } } } } catch (IOException e) { e.printStackTrace(); } System.out.println("字?jǐn)?shù): " + wordCount); System.out.println("空格數(shù): " + spaceCount); System.out.println("標(biāo)點(diǎn)符號(hào)數(shù): " + punctuationCount); } }
用python統(tǒng)計(jì)一個(gè)文件夾下的所有文件的中文字?jǐn)?shù)
import os DirPath = 'D:/下載/docs' resultArray = [] listCount = 0 content = '' resultCount = 0 def check_contain_chinese(check_str, fileName): countResult = 0 for ch in check_str: if u'\u4e00' <= ch <= u'\u9fff': countResult += 1 resultArray.append(countResult) print(str(fileName) + "文件的中文字?jǐn)?shù)是:" + str(countResult) + '\n') if __name__ == "__main__": for item in os.listdir(DirPath): print(DirPath + '/' + item) listCount += 1 f = open(DirPath + '/' + item, 'r', encoding='utf-8') content = f.read() check_contain_chinese(content, item) for num in resultArray: resultCount += num print("累計(jì)文件個(gè)數(shù):" + str(listCount) + "個(gè)") print("累計(jì)中文字符:" + str(resultCount) + "個(gè)")
到此這篇關(guān)于Java實(shí)現(xiàn)統(tǒng)計(jì)文件夾下所有文件的字?jǐn)?shù)的文章就介紹到這了,更多相關(guān)Java統(tǒng)計(jì)文件字?jǐn)?shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)微信登錄并獲取用戶信息功能(開發(fā)流程)
這篇文章主要介紹了Java實(shí)現(xiàn)微信登錄并獲取用戶信息功能(開發(fā)流程),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07Spring MVC 關(guān)于controller的字符編碼問(wèn)題
在使用springMVC框架構(gòu)建web應(yīng)用,客戶端常會(huì)請(qǐng)求字符串、整型、json等格式的數(shù)據(jù),通常使用@ResponseBody注解使 controller回應(yīng)相應(yīng)的數(shù)據(jù)而不是去渲染某個(gè)頁(yè)面。2017-03-03java基本教程之java線程等待與java喚醒線程 java多線程教程
這篇文章主要介紹了對(duì)線程等待/喚醒方法,文中使用了多個(gè)示例,大家參考使用吧2014-01-01基于Java網(wǎng)絡(luò)編程和多線程的多對(duì)多聊天系統(tǒng)
這篇文章主要介紹了基于Java網(wǎng)絡(luò)編程和多線程的多對(duì)多聊天系統(tǒng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java網(wǎng)絡(luò)編程的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04java多線程并發(fā)executorservice(任務(wù)調(diào)度)類
這篇文章主要介紹了線程并發(fā)ScheduledExecutorService類,設(shè)置 ScheduledExecutorService ,2秒后,在 1 分鐘內(nèi)每 10 秒鐘蜂鳴一次2014-01-01springboot項(xiàng)目啟動(dòng)后執(zhí)行方法的三種方式
有時(shí)項(xiàng)目需求,需要項(xiàng)目啟動(dòng)的時(shí)候向數(shù)據(jù)庫(kù)中查詢一下系統(tǒng)屬性,或者需要加載某個(gè)特定的方法,下面這篇文章主要給大家介紹了關(guān)于springboot項(xiàng)目啟動(dòng)后執(zhí)行方法的三種方式,需要的朋友可以參考下2022-06-06