Такой файл или каталог не найден, хотя файл находится в том же пакете - PullRequest
1 голос
/ 07 марта 2019

Я пытаюсь отсканировать файл "loremIpsum.txt" в строку, используя метод split класса String, чтобы сохранить каждое слово в другой позиции массива, и в последний раз использовать 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» находятся в одном пакете:
error message and proof

Ответы [ 3 ]

1 голос
/ 07 марта 2019

Файл будет найден в каталоге проекта (где находятся папки bin и src). Переместите файл туда.

0 голосов
/ 07 марта 2019

Вам нужно передать параметр как путь.

попробуйте это

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

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

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

В основном вы просто находите текущий путь и добавляете имя файла, из которого хотите прочитать.Однако, как сказали другие, вы также можете переместить его в свой рабочий каталог.

Приветствия!

0 голосов
/ 07 марта 2019

Когда вы вызываете конструктор File с относительным путем, он относится к рабочему каталогу .

Обычно это не тот же каталог, что и код, вызывающий конструктор. Но это нормально, потому что, если ваш файл может быть указан при запуске приложения, вы все равно не будете предполагать это.

Вы можете указать рабочий каталог в конфигурации запуска Eclipse на вкладке Аргументы .

Вы можете увидеть, как относительный путь был разрешен с помощью метода File getAbsolutePath ().

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

        loremIpsum = new Scanner(myFile).next().split(" ");
        ...
...