如何在 java 中将 txt 文件读入 AVL 树?错误 FileNotFoundException

问题描述 投票:0回答:1

新的 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();
java bufferedreader filereader avl-tree word-frequency
1个回答
0
投票

通常,工作目录是你项目的根文件夹,所以你的文件应该在那里。另外,我可以说要验证你程序的工作目录,你可以添加以下代码行

System.out.println(System.getProperty("user.dir"));

确保“file1.txt”与打印的工作目录位于同一目录中。

© www.soinside.com 2019 - 2024. All rights reserved.