1

我正在尝试"loremIpsum.txt"使用 String 类的 split 方法将文件扫描为字符串,以将每个单词存储在数组的不同位置,最后使用 HashSet 查找文本中是否有任何单词重复。

但是即使它在同一个包中,Eclipse 也无法识别该文件。我想知道我的代码是否有问题?

package Lab5;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashSet;
import java.util.Scanner;

public class Lorem {

    public static void main(String[] args) {
        String[] loremIpsum = null;
        try {
            loremIpsum = new Scanner(new File("loremIpsum.txt")).next().split(" ");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        System.out.println(loremIpsum.length);
        HashSet h = new HashSet();

        for(int i=0;i<loremIpsum.length;i++) {
            String word=loremIpsum[i];
            System.out.println(word);
            if(h.contains(word)) {
                System.out.println("we found a duplicate");
            } else {
                h.add(word);
            }   
        }

    }

}

错误信息和证明“lorem.txt”在同一个包中:
错误信息和证明

4

3 回答 3

1

该文件将在项目目录(文件夹所在的位置)bin中查找。src将文件移到那里。

于 2019-03-07T19:40:46.943 回答
0

您需要将参数作为路径传递。

尝试这个

String path = new File("").getAbsolutePath();

path.concat("/loremIpsum.txt");

loremIpsum = new Scanner(new File(path)).next().split(" ");

基本上你只是找到当前路径并附加你想要读取的文件名。就像其他人说的那样,您也可以将其移动到您的工作目录。

干杯!

于 2019-03-07T19:43:03.213 回答
0

当您使用相对路径调用 File 构造函数时,它是相对于工作目录的。

这通常与调用构造函数的代码不在同一个目录。但这没关系,因为如果您的文件可以在您运行应用程序时指定,那么您无论如何都不想假设。

您可以在 Eclipse 运行配置中的Arguments选项卡上指定工作目录。

您可以看到如何使用 File 方法getAbsolutePath() 解析相对路径。

   try {
        File myFile = new File("loremIpsum.txt");
        System.out.println("Absolute path = " + myFile.getAbsolutePath() );

        loremIpsum = new Scanner(myFile).next().split(" ");
        ...
于 2019-03-07T19:41:16.313 回答