新的 Java 开发人员。 此代码无效。它不断生成此错误:
java.io.FileNotFoundException: file1.txt (No such file or directory)
即使文件与 java 类位于同一文件夹(src)中
我的程序应该计算 txt 文件中单词的词频。我试图通读 txt 文件,并将每个单词连同 txt 文件中单词的频率一起放入 AVL 树的节点中,因此每个节点看起来像这样:(“单词”,5)。这是代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.io.IOException;
public class FindKeyWordsInFile {
//public AVLTree.Node root;
public static void main(String[] args) {
if (args.length != 3) {
System.err.println("Usage: java FindKeyWordsInFile k file.txt MostFrequentEnglishWords.txt");
System.exit(1);
}
int k = Integer.parseInt(args[0]);
String inputFileName = args[1];
String englishWordsFileName = args[2];
AVLTree<String, Integer> wordFrequencies = new AVLTree<>();
AVLTree<String, Void> englishWords = new AVLTree<>();
AVLTree<String, Integer> keywordFrequencies = new AVLTree<>();
try {
BufferedReader reader = new BufferedReader(new FileReader("file1.txt"));
String line = reader.readLine();
while (line != null) {
String[] words = line.split("\\s+");
for (String word : words) {
// Remove punctuation and convert to lower case
String cleanedWord = word.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
if (cleanedWord.length() > 0) {
Integer frequency = wordFrequencies.get(cleanedWord);
if (frequency == null) {
frequency = 0;
}
wordFrequencies.put(cleanedWord, frequency + 1);
}
}
line = reader.readLine();
}
reader.close();
通常,工作目录是你项目的根文件夹,所以你的文件应该在那里。另外,我可以说要验证你程序的工作目录,你可以添加以下代码行
System.out.println(System.getProperty("user.dir"));
确保“file1.txt”与打印的工作目录位于同一目录中。