Java实现统计文件夹下所有文件的字数

 更新时间:2024年03月25日 09:33:22   作者:林小果呀  
这篇文章主要为大家详细介绍了如何使用Java实现统计文件夹下所有文件的字数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

统计文件夹下所有.md文件的字数

示例代码

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);
    }
}

方法补充

除了上文的方法,小编还为大家整理了其他实现统计文件字数的方法,希望对大家有所帮助

Java统计文档的字数

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 {
            // 创建文件对象
            File file = new File(filePath);
            
            // 创建Scanner对象,用于读取文件内容
            Scanner scanner = new Scanner(file);
            
            // 统计字符个数的变量
            int count = 0;
            
            // 逐行读取文件内容,并统计字符个数
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                count += line.replaceAll("\\s+", "").length();
            }
            
            // 输出统计结果
            System.out.println("文档的字数是:" + count);
            
            // 关闭Scanner对象
            scanner.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

Java获取文件字数

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"; // 替换为要统计字数的文件路径

        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("字数: " + wordCount);
        System.out.println("空格数: " + spaceCount);
        System.out.println("标点符号数: " + punctuationCount);
    }
}

用python统计一个文件夹下的所有文件的中文字数

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) + "文件的中文字数是:" + 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("累计文件个数:" + str(listCount) + "个")
    print("累计中文字符:" + str(resultCount) + "个")

到此这篇关于Java实现统计文件夹下所有文件的字数的文章就介绍到这了,更多相关Java统计文件字数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot添加支付接口

    Springboot添加支付接口

    这篇文章主要介绍了springboot如何添加支付接口,帮助大家更好得理解和学习使用springboot框架,感兴趣的朋友可以了解下
    2021-04-04
  • Java实现微信登录并获取用户信息功能(开发流程)

    Java实现微信登录并获取用户信息功能(开发流程)

    这篇文章主要介绍了Java实现微信登录并获取用户信息功能(开发流程),本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • java8中:: 用法示例(JDK8双冒号用法)

    java8中:: 用法示例(JDK8双冒号用法)

    这篇文章主要给大家介绍了关于java8 中的:: 用法(JDK8双冒号用法)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java8具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Spring MVC 关于controller的字符编码问题

    Spring MVC 关于controller的字符编码问题

    在使用springMVC框架构建web应用,客户端常会请求字符串、整型、json等格式的数据,通常使用@ResponseBody注解使 controller回应相应的数据而不是去渲染某个页面。
    2017-03-03
  • java -jar命令的具体使用

    java -jar命令的具体使用

    java -jar命令是一种方便快捷地在命令行中运行Java可执行jar文件的方法,本文主要介绍了java -jar命令的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • java基本教程之java线程等待与java唤醒线程 java多线程教程

    java基本教程之java线程等待与java唤醒线程 java多线程教程

    这篇文章主要介绍了对线程等待/唤醒方法,文中使用了多个示例,大家参考使用吧
    2014-01-01
  • 基于Java网络编程和多线程的多对多聊天系统

    基于Java网络编程和多线程的多对多聊天系统

    这篇文章主要介绍了基于Java网络编程和多线程的多对多聊天系统,文中有非常详细的代码示例,对正在学习java网络编程的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • java多线程并发executorservice(任务调度)类

    java多线程并发executorservice(任务调度)类

    这篇文章主要介绍了线程并发ScheduledExecutorService类,设置 ScheduledExecutorService ,2秒后,在 1 分钟内每 10 秒钟蜂鸣一次
    2014-01-01
  • springboot项目启动后执行方法的三种方式

    springboot项目启动后执行方法的三种方式

    有时项目需求,需要项目启动的时候向数据库中查询一下系统属性,或者需要加载某个特定的方法,下面这篇文章主要给大家介绍了关于springboot项目启动后执行方法的三种方式,需要的朋友可以参考下
    2022-06-06
  • Java Scala的隐式转换详解

    Java Scala的隐式转换详解

    隐式转换是在Scala编译器进行类型匹配时,如果找不到合适的类型,那么隐式转换会让编译器在作用范围内自动推导出来合适的类型。本文通过代码示例介绍了Scala的隐式转换,感兴趣的小伙伴可以参考阅读
    2023-04-04

最新评论