📜  使用Java计算文本文件txt中的行数/单词数/字符数和段落数

📅  最后修改于: 2020-03-27 11:27:34             🧑  作者: Mango

计算字符数很重要,因为几乎所有依赖用户输入的文本框都对可插入的字符数有一定的限制。例如,Facebook帖子上的字符数限制为63个206个字符。而对于Twitter上的一条推文的字符数限制为140个字符,Snapchat的每个帖子的字符数限制为80。

当通过api完成推文和Facebook发布更新时,确定字符限制就变得至关重要。
注意:该程序无法在在线编译器上运行。请在您的系统上创建一个txt文件,并提供在该系统上运行该程序的路径。

// Java展示计算字符数
import java.io.*;
public class Test
{
    public static void main(String[] args) throws IOException
    {
        File file = new File("C:\\Users\\Mayank\\Desktop\\1.txt");
        FileInputStream fileStream = new FileInputStream(file);
        InputStreamReader input = new InputStreamReader(fileStream);
        BufferedReader reader = new BufferedReader(input);
        String line;
        // 初始化计数
        int countWord = 0;
        int sentenceCount = 0;
        int characterCount = 0;
        int paragraphCount = 1;
        int whitespaceCount = 0;
        // 逐行读入,直到null被返回
        while((line = reader.readLine()) != null)
        {
            if(line.equals(""))
            {
                paragraphCount++;
            }
            if(!(line.equals("")))
            {
                characterCount += line.length();
                // \\s+ 是Java的空格分隔符
                String[] wordList = line.split("\\s+");
                countWord += wordList.length;
                whitespaceCount += countWord -1;
                // [!?.:]+是Java中的句子分隔符
                String[] sentenceList = line.split("[!?.:]+");
                sentenceCount += sentenceList.length;
            }
        }
        System.out.println("总单词数量 = " + countWord);
        System.out.println("句子总数 = " + sentenceCount);
        System.out.println("字符总数 = " + characterCount);
        System.out.println("段落总数 = " + paragraphCount);
        System.out.println("空格总数 = " + whitespaceCount);
    }
}

输出:

总单词数量 = 5
句子总数 = 3
字符总数 = 21
段落总数 = 2
空格总数 = 7

使用内置函数

  1. File(String pathname): java.io.File:通过将给定的路径​​字符串转换为抽象路径名来创建新的File实例。
    语法:
    public File(String pathname)
    参数:
    pathname - 路径名string字符串
  2. FileInputStream(File file): java.io.FileInputStream,通过打开与实际文件的连接来创建FileInputStream,该文件由文件系统中的File对象文件命名。
    语法:
    public FileInputStream(File file) throws FileNotFoundException
    参数:
    file - 待打开文件路径.
    报错:
    FileNotFoundException : 文件不存在或无法打开
    SecurityException : 文件被安全管理,没有访问的权限.
  3. InputStreamReader(InputStream in): java.io.InputStreamReader,创建一个使用默认字符集的InputStreamReader。
    语法:
    public InputStreamReader(InputStream in)
    参数:
    in - 一个InputStream
  4. BufferedReader(Reader in): java.io.BufferedReader,创建一个使用默认大小的输入缓冲区的缓冲字符输入流。
    语法:
    public BufferedReader(Reader in)
    参数:
    in - 一个Reader