Открытие изображения - PullRequest
       34

Открытие изображения

0 голосов
/ 15 марта 2012

Я идиот.Почему я не могу прочитать какие-либо файлы?

import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


public class mainClass {

    public static void main(String[] args) {
        try {
            Image picture = ImageIO.read(new File("picture.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

И файл точно находится в папке src.

Но он выдает исключение каждый раз, даже если файл есть, нет орфографических ошибок.

edit: первое предложение было верным, я не поместил изображение в корень.

Ответы [ 3 ]

2 голосов
/ 15 марта 2012

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

try
{
    Image picture = ImageIO.read(new File("picture.png"));
}
catch (IOException e)
{
    String workingDir = System.getProperty("user.dir");
    System.out.println("Current working directory : " + workingDir);
    e.printStackTrace();
}
0 голосов
/ 13 сентября 2016

В Java есть дихотомия.

  1. Если ваш файл является частью доставляемого проекта, файла, который можно упаковать в файл jar приложения, то это ресурс .

    Image picture = ImageIO.read(SomeClassOfYours.class.getResource("/picture.png"));
    

Путь относительно этого класса, и его можно сделать абсолютным путем. Все на пути к классу java приложения.

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

    Image picture = ImageIO.read(new File("C:/.../src/picture.png"));
    

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

0 голосов
/ 13 сентября 2016

Попробуйте указать путь к вашему изображению. Например:

Image picture = ImageIO.read(new File("C:/Desktop/picture.png"));

Или, если изображение находится в вашем рабочем пространстве, например:

Image picture = ImageIO.read(new File("C:/workspace/Project/src/picture.png"));

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

Вы можете использовать одну slah (/) или две обратной косой черты (\\) для разделения каталогов пути.

...