Java 如何读取文本文件而不获取FileNotFoundException?

Java 如何读取文本文件而不获取FileNotFoundException?,java,file-io,computer-science,filenotfoundexception,file-read,Java,File Io,Computer Science,Filenotfoundexception,File Read,我正在为计算机科学课的期末作业编写一个单词搜索生成器程序 我创建了一个名为“Words”的文本文件,其中包含字母表中26个字母中每个字母的10个单词。我通过读取文本文件并将单词存储在数组列表中来引用该文本文件 我使用了我在这里得到的反馈,并做了一些更改。我已经定义了fileName是什么,并且插入了文本文件的确切位置 这是我的更新代码: public static List<String> readWords () throws IOException { Stri

我正在为计算机科学课的期末作业编写一个单词搜索生成器程序

我创建了一个名为“Words”的文本文件,其中包含字母表中26个字母中每个字母的10个单词。我通过读取文本文件并将单词存储在数组列表中来引用该文本文件

我使用了我在这里得到的反馈,并做了一些更改。我已经定义了
fileName
是什么,并且插入了文本文件的确切位置

这是我的更新代码:

public static List<String> readWords () throws IOException {

        String fileName = ("C:\\Users\\Dell\\workspace\\Final Summative\\src\\Words.txt");

        int maxLength = Math.max(rows, cols);

        List<String> words = new ArrayList<>(); // The words from the Words text file will be stored in this array list

        try (Scanner sc = new Scanner(new FileReader(fileName))) {      

            while (sc.hasNextLine()) {

                String s = sc.next().trim().toLowerCase();

                if (s.matches("^[a-z]{3," + maxLength + "}$")) { // We will pick only words with length = 3 and max. length, and [a-z] inside

                    words.add(s.toUpperCase());

                }//end of if

            }//end of while loop

        } catch (IOException e) {

            // Manage the error!

            e.printStackTrace();

        }//end of catch

        return words;

    }//end of readWords(fileName)

首先,在
s.matches(“^[a-z]{3,”+maxLength+“]$”
中,您没有正确地关闭括号{} 而且最有可能的文件名没有正确给出。

如果您的文本文件在桌面上,请检查它是否类似于:
readWords(“C:/Users/Username/Desktop/words.txt”)

如果您真正需要做的是读取文件中的所有行,那么在更现代的Java版本中有一个快捷方式:
Files.lines

事实上,如果你有一个匹配单词的模式,那么你可以使用
Matcher.results
MatchResult.group
一次完成这一切:

Files.lines(path)
    .map(pattern::matcher)
    .flatMap(Matcher::results)
    .map(MatchResult::group)
    .collect(Collector.toList());
然而,我不确定你是否已经研究过流,或者你可以使用哪些库


请注意,我在这里收集了一个列表,但收集到一个集合(假设您不需要知道重复项)或一个地图(如果对单词的使用很重要,则以第一个字母为键)可能更有意义.

在发布之前,您确实有责任进行一些调试工作,并突出显示问题可能出现在代码中的确切位置。
fileName
指向错误位置。您只需修复该问题。提示:您需要将文件放在“可访问的位置”到您的程序–最简单的方法:Java
类路径中的某个地方。这就是
FileNotFoundException
告诉您的。您的“项目”的文件夹结构是什么?而
单词
文件位于哪里?@YashviShah我不知道,因为我不知道您试图读取的文件的实际路径。您只需要验证它们是否匹配。
//管理错误!
不要只对其进行注释,更改
e.printStackTrace();
Files.lines(path)
    .map(pattern::matcher)
    .flatMap(Matcher::results)
    .map(MatchResult::group)
    .collect(Collector.toList());