java - 如何为多个输入文件生成多个输出文件

标签 java file file-io

我正在尝试为目录中的每个文件生成词频并将输出放入多个文件中。 输入文件包含句子,输出文件包含单词及其重复次数。

使用以下代码,我能够一次读取多个文件,但输出会生成到一个文件中。

我想将每个输入文件的输出生成到不同的文件中。

代码:

import java.util.*;
import java.io.*;

public class words {
    public static void main(String args[]) throws Exception {

        File dir = new File("foldername");
        // Create a TreeMap to hold words as key and count as value
        Map<String, Integer> map = new TreeMap<>();

        for(File file : dir.listFiles())
        {
        try ( // Create an input stream
            Scanner input = new Scanner(file);
        ) {
            while (input.hasNext()) {

                String[] words = input.nextLine().split("[ \n\t\r\"\'.,;:!?()]");

                store(map, words);
            }
        }   

        // Get all entries into a set
        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();

        //To write the output into a text file
        PrintWriter out = new PrintWriter("out.txt");

        // Get key and value from each entry
        for (Map.Entry<String, Integer> entry: entrySet)

        out.println(entry.getValue() + "\t" + entry.getKey());

        out.close();
    }
}
    /*To sort the occurrence of words*/
    private static void store(Map<String, Integer> map, String[] words) {
        for (int i = 0; i < words.length; i++) {
            String key = words[i].toLowerCase();

            if (key.length() > 0 && Character.isLetter(key.charAt(0))) {
                if (!map.containsKey(key)) {
                    map.put(key, 1);
                }
                else {
                    int value = map.get(key);
                    value++;
                    map.put(key, value);
                }
            }
        }
    }
}

最佳答案

您只设置了一个输出文件“out.txt”。您必须使用多个文件。

例如:

for(File file : dir.listFiles()) {
    try ( // Create an input stream
        Scanner input = new Scanner(file);
    ) {
        while (input.hasNext()) {

            String[] words = input.nextLine().split("[ \n\t\r\"\'.,;:!?()]");

            store(map, words);
        }
        //Here use Printwriter
        try(PrintWriter pw = new PrintWriter(file.getName() + "_out.txt") {
            //iterate over entryset and clear the map after with map.clear()
        }
    }   

关于java - 如何为多个输入文件生成多个输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48816705/

相关文章:

java - 从 Windows 批处理文件中自行删除 jar

java - MyBatis 插入 null 时出现 nullPointerException

c - 对一个非常大的文件进行 XOR

Java 获取十六进制反转

java - Facebook 登录不适用于已签名的应用程序

java - 从 ChatColor 转换为颜色代码

file - 如何在 VimScript 中打开文件并对其进行操作而不将其显示在窗口中?

file - 在 PostgreSQL 中存储文件是否存在性能问题?

java.io.FileNotFoundException,找不到文件

c++ - 从目录中读取文件名