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)微信登錄并獲取用戶(hù)信息功能(開(kāi)發(fā)流程)
這篇文章主要介紹了Java實(shí)現(xiàn)微信登錄并獲取用戶(hù)信息功能(開(kāi)發(fā)流程),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
Spring MVC 關(guān)于controller的字符編碼問(wèn)題
在使用springMVC框架構(gòu)建web應(yīng)用,客戶(hù)端常會(huì)請(qǐng)求字符串、整型、json等格式的數(shù)據(jù),通常使用@ResponseBody注解使 controller回應(yīng)相應(yīng)的數(shù)據(jù)而不是去渲染某個(gè)頁(yè)面。2017-03-03
java基本教程之java線(xiàn)程等待與java喚醒線(xiàn)程 java多線(xiàn)程教程
這篇文章主要介紹了對(duì)線(xiàn)程等待/喚醒方法,文中使用了多個(gè)示例,大家參考使用吧2014-01-01
基于Java網(wǎng)絡(luò)編程和多線(xiàn)程的多對(duì)多聊天系統(tǒng)
這篇文章主要介紹了基于Java網(wǎng)絡(luò)編程和多線(xiàn)程的多對(duì)多聊天系統(tǒng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java網(wǎng)絡(luò)編程的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
java多線(xiàn)程并發(fā)executorservice(任務(wù)調(diào)度)類(lèi)
這篇文章主要介紹了線(xiàn)程并發(fā)ScheduledExecutorService類(lèi),設(shè)置 ScheduledExecutorService ,2秒后,在 1 分鐘內(nèi)每 10 秒鐘蜂鳴一次2014-01-01
springboot項(xiàng)目啟動(dòng)后執(zhí)行方法的三種方式
有時(shí)項(xiàng)目需求,需要項(xiàng)目啟動(dòng)的時(shí)候向數(shù)據(jù)庫(kù)中查詢(xún)一下系統(tǒng)屬性,或者需要加載某個(gè)特定的方法,下面這篇文章主要給大家介紹了關(guān)于springboot項(xiàng)目啟動(dòng)后執(zhí)行方法的三種方式,需要的朋友可以參考下2022-06-06

