如何在java中从文本文件/文件夹中获取字数(无需更改文件夹的读取顺序)
在我下面的代码中,它读取文件夹中的.txt文件(假设文件夹中有2000多个文本文件),并显示文本文档中的总字数 如果仅从目录中读取10-30个文本文件,则输出将按每个文本文件的顺序正确显示 但当我添加2000多个文本文件并立即从该文件夹中读取时,输出排列被折叠(它以随机顺序显示) 有人能建议我解决这个问题吗如何在java中从文本文件/文件夹中获取字数(无需更改文件夹的读取顺序),java,text,hashmap,filereader,word-count,Java,Text,Hashmap,Filereader,Word Count,在我下面的代码中,它读取文件夹中的.txt文件(假设文件夹中有2000多个文本文件),并显示文本文档中的总字数 如果仅从目录中读取10-30个文本文件,则输出将按每个文本文件的顺序正确显示 但当我添加2000多个文本文件并立即从该文件夹中读取时,输出排列被折叠(它以随机顺序显示) 有人能建议我解决这个问题吗 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
public class duplicatestrings
{
public static void main(String[] args)
{
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
};
File folder = new File("E:\\testfolder");
File[] listOfFiles = folder.listFiles(filter);
for (int i = 0; i < listOfFiles.length; i++) {
File file1 = listOfFiles[i];
try {
String content = FileUtils.readFileToString(file1);
// System.out.println("asssdffsssssssssss = " + content);
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader ins = null;
try {
ins = new BufferedReader (
new InputStreamReader(
new FileInputStream(file1)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String line = "", str = "";
int a = 0;
int b = 0;
try {
while ((line = ins.readLine()) != null) {
str += line + " ";
b++;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println("Total number of lines " +b);
//System.out.println(str);
/* int count =0;
try {
String input = ins.readLine();
String[] array = input.split(" ");
System.out.print("\nPlease enter word to be counted :");
String key = ins.readLine();
for(int s=0;i < array.length;i++){
if(array[s].equals(key))
count++;
}
System.out.print("\n The given word occured " + count + " times");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
StringTokenizer st = new StringTokenizer(str);
while (st.hasMoreTokens()) {
String s = st.nextToken();
a++;
}
// List<String> list = Arrays.asList(str.split(" "));
// Set<String> uniqueWords = new HashSet<String>(list);
// for (String word : uniqueWords) {
// System.out.println(word + a+ "\n" + Collections.frequency(list, word));}
System.out.println(" Total no of words=" + a );
}
}
}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.FilenameFilter;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.StringReader;
导入java.util.*;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
导入org.apache.commons.io.FileUtils;
公共类重复字符串
{
公共静态void main(字符串[]args)
{
FilenameFilter筛选器=新建FilenameFilter(){
公共布尔接受(文件目录,字符串名称){
返回名称.endsWith(“.txt”);
}
};
文件夹=新文件(“E:\\testfolder”);
File[]listOfFiles=folder.listFiles(过滤器);
for(int i=0;i
而且我必须从所有文本文件/文件夹(目录)中获得不同且重复的单词“no of counts(only)”
欢迎您的建议。在计算每个文件中的字数后,您可以将结果插入树集,然后以一致的顺序显示它们。键是文件名,值是字数。见:
或者,您可以对文件夹中的文件名进行排序,并计算排序文件列表中的单词:我想下面的逻辑将帮助您向其中添加文件读取代码,并用文件中的每一行替换“test”变量 计算单词总数或不重复计算单词总数
public static void main(String[] args) {
String test = "I am trying to make make make";
Pattern p = Pattern.compile("\\w+");
Matcher m = p.matcher(test);
HashSet<String> hs = new HashSet<>();
int i=0;
while (m.find()) {
i++;
hs.add(m.group());
}
System.out.println("Total words Count==" + i);
System.out.println("Count without Repetation ==" + hs.size());
}
publicstaticvoidmain(字符串[]args){
String test=“我正在尝试制作”;
模式p=模式。编译(\\w+);
匹配器m=p.匹配器(测试);
HashSet hs=新的HashSet();
int i=0;
while(m.find()){
i++;
hs.add(m.group());
}
System.out.println(“总字数=”+i);
System.out.println(“无重复计数=”+hs.size());
}
输出:
总字数==7
无重复计数==5
希望这有帮助:)请在输出中详细说明您想要的内容。是否要分别计算每个
.txt
文件的字数?你说的这个订单是什么?当您在windows资源管理器中看到这些文件时,它们是按文件名的字母顺序排列的吗?是的,我希望每个.txt文件都有单独的字数。输出是随机显示的。一些文本文件是按随机顺序排列的。如果我查看(文件1),它只有1000个文件,但在我的目录文件夹中,我有2000多个文件。但是输出“总字数”是对所有2000多个文件的计数。您所说的是什么意思?输出排列被折叠。(它以随机顺序显示)
我看到您的输出只有总计,没有文件名,所以您怎么知道它不正确?请记住,folder.listFiles(filter)
可能无法按操作系统的fileexplorer
中显示的顺序显示文件。我希望按文件资源管理器中显示的字母顺序排列。我对其进行了交叉检查