Java實現(xiàn)統(tǒng)計文件夾下所有文件的字?jǐn)?shù)
統(tǒng)計文件夾下所有.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);
}
}
方法補充
除了上文的方法,小編還為大家整理了其他實現(xiàn)統(tǒng)計文件字?jǐn)?shù)的方法,希望對大家有所幫助
Java統(tǒng)計文檔的字?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)建文件對象
File file = new File(filePath);
// 創(chuàng)建Scanner對象,用于讀取文件內(nèi)容
Scanner scanner = new Scanner(file);
// 統(tǒng)計字符個數(shù)的變量
int count = 0;
// 逐行讀取文件內(nèi)容,并統(tǒng)計字符個數(shù)
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
count += line.replaceAll("\\s+", "").length();
}
// 輸出統(tǒng)計結(jié)果
System.out.println("文檔的字?jǐn)?shù)是:" + count);
// 關(guān)閉Scanner對象
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ǐ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)點符號數(shù): " + punctuationCount);
}
}用python統(tǒng)計一個文件夾下的所有文件的中文字?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("累計文件個數(shù):" + str(listCount) + "個")
print("累計中文字符:" + str(resultCount) + "個")到此這篇關(guān)于Java實現(xiàn)統(tǒng)計文件夾下所有文件的字?jǐn)?shù)的文章就介紹到這了,更多相關(guān)Java統(tǒng)計文件字?jǐn)?shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實現(xiàn)微信登錄并獲取用戶信息功能(開發(fā)流程)
這篇文章主要介紹了Java實現(xiàn)微信登錄并獲取用戶信息功能(開發(fā)流程),本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
Spring MVC 關(guān)于controller的字符編碼問題
在使用springMVC框架構(gòu)建web應(yīng)用,客戶端常會請求字符串、整型、json等格式的數(shù)據(jù),通常使用@ResponseBody注解使 controller回應(yīng)相應(yīng)的數(shù)據(jù)而不是去渲染某個頁面。2017-03-03
java基本教程之java線程等待與java喚醒線程 java多線程教程
這篇文章主要介紹了對線程等待/喚醒方法,文中使用了多個示例,大家參考使用吧2014-01-01
基于Java網(wǎng)絡(luò)編程和多線程的多對多聊天系統(tǒng)
這篇文章主要介紹了基于Java網(wǎng)絡(luò)編程和多線程的多對多聊天系統(tǒng),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java網(wǎng)絡(luò)編程的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
java多線程并發(fā)executorservice(任務(wù)調(diào)度)類
這篇文章主要介紹了線程并發(fā)ScheduledExecutorService類,設(shè)置 ScheduledExecutorService ,2秒后,在 1 分鐘內(nèi)每 10 秒鐘蜂鳴一次2014-01-01

