Неправильный путь к файлу в Java - PullRequest
0 голосов
/ 23 октября 2018

Итак, мы получили это задание в базовом курсе по Java-программированию и должны реализовать своего рода колоду карт.Чтобы помочь нам в этом, они предоставили нам ресурсы, которые будут отображать GUI на экране, но при запуске моей программы я получаю IOException, который говорит, что он не может прочитать входной файл, скорее всего, поскольку путь указан неверно.И я не знаю, как это исправить, мы даже не должны вмешиваться в этот код.В этом методе выдается ошибка:

private Image getImg(Card aCard) {
    File pathToFile = null;
    if (aCard == null) {
        pathToFile = new File("cardset-oxymoron/shade.gif");
    } else {
        String suits = "cdhs";
        char c = suits.charAt(aCard.getSuit());
        String fileName = String.format("%s/%02d%c.gif", "cardset-oxymoron", aCard.getRank(), c);
        pathToFile = new File(fileName);
    }
    Image img = null;
    try {
        img = ImageIO.read(pathToFile);
    } catch (IOException ex) {
        System.err.println("Failed to create image");
        ex.printStackTrace();
    }
    return img;
}

И в соответствии со стеком ошибок (?) Он находится в строке 99, то есть в строке

img = ImageIO.read(pathToFile); 

Папка, в которой находятся карты, находится внутри папки проекта, прямо между bin и src.с помощью отладчика IntelliJ я вижу, что pathToFile является "cardset-oxymoron \ 02d.gif".Имя файла правильное, так как все карточки "[01-13] [c / d / h / s] .gif".Когда я щелкнул правой кнопкой мыши и скопировал путь к файлам внутри IntelliJ, он использовал прямую, а не обратную косую черту.Но затем я зарегистрировался в проводнике, и все было наоборот ... Я понятия не имею, где это происходит не так, любой вклад будет принята с благодарностью!

1 Ответ

0 голосов
/ 24 октября 2018

Согласно вашему коду ваши файлы находятся в каталоге cardset-oxymoron относительно вашего каталога запуска JVM.Я не уверен насчет IntelliJ (я все время работаю с Eclipse и Maven), но это может быть каталог bin.

Вы можете проверить это, поставив эти две строки, чтобы увидеть, что это на самом деле (где-то перед вашим реальным кодом)

    File currentDir = new File("./");
    System.out.println(currentDir.getAbsolutePath());

Тогда ваш cardset-oxymoron должен быть в этом каталоге.Или вы можете изменить путь к файлу соответствующим образом.

Например, если currentDir равен bin, тогда pathToFile будет

 pathToFile = new File("../cardset-oxymoron/shade.gif");

, а также fileName для другого случая.

...