2012-04-11 2 views
1

Как устранить эту ошибку? Я не мог найти решение, используя разные пути, даже вручную. Пожалуйста, объясните, как читать изображение в буферном изображении, используя абсолютный путь.IOException: не удается прочитать входной файл. Я не мог найти решение, используя разные пути, даже вручную

private BufferedImage[] image = new BufferedImage[9]; 
private int imageNo = 0; 
private Boolean draw = false; 
private int drawType; 
private String [] realtivePath; 
private String [] absolutePath; 
//============================================================================= 

public DrawPanel() { 

    int i,j; 
    absolutePath = new String[9]; 
    realtivePath = new String []{"B_Pictures\\Burj Khalifa.jpg", "B_Pictures\\Taipei 101.jpg", "B_Pictures\\Willis Tower.jpg", 
     "B_Pictures\\Empire State Building.jpg", "B_Pictures\\Chrysler Building.jpg", 
     "B_Pictures\\Woolworth Building.jpg", "B_Pictures\\Met Life Tower.jpg", 
     "B_Pictures\\Singer Building.jpg", "B_Pictures\\Philadelphia City Hall.jpg"}; 
    //====================================================================== 
    for(i = 0;i < 9; i++) 
    { 
     absolutePath[i] = new File(realtivePath[i]).getAbsolutePath(); 
     System.out.println("Path is: "+absolutePath[i]); 
    } 
    //======================================================================= 
    try { 
     for (j = 0; j < 9; j++) { 
      image[j] = ImageIO.read(new File(absolutePath[j])); //<-- can't read absolute path! 
     } 
    }catch (IOException e) { 
     e.printStackTrace(); 
     //System.out.println("Error reading file"); 
    } 
+0

Вместо reasking, обновить свой вопрос и попросить немного внимания. –

+0

Должен ли я удалить этот? Спасибо за консультацию. –

+1

Вы должны хотя бы включить ошибку, которую вы получаете, и вывод, создаваемый вашей System.out.println. –

ответ

4

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

UPDATE:

как разъяснение, File.getAbsolutePath() делает относительный путь абсолютным, если она в настоящее время относительна. это чисто текстовое изменение и не подразумевает какой-либо действительности для конечного абсолютного пути. например если у вас есть относительный путь «foo/bar», и вы делаете его абсолютным на основе текущего каталога «/ blah», то ваш итоговый абсолютный путь «/ blah/foo/bar». , что не означает, что «/ blah/foo/bar» является допустимым путем.

Вот простой способ проверить код:

System.out.println("Path is: "+absolutePath[i] + ", isReadable " + new File(absolutePath[i]).canRead()); 
+0

Можете ли вы объяснить это на основе решения. Как они могут быть неправильными, поскольку они генерируются методом, который возвращает абсолютный путь? –

+0

@Edi - обновил мой ответ – jtahlborn

+0

Я предоставил первую строку с относительным путем: B_Pictures \ Burj Khalifa.jpg, который представляет собой пакет в java netbeans, который содержит все jpeg-изображения. Основываясь на этом относительном пути, я использовал метод getAbsolutePath() для получения абсолютного пути: C: \ Users \ foo \ Desktop \ Sorting_Ass4 \ B_Pictures \ Burj Khalifa.jpg, например, упомянутого выше. Даже без получения абсолютного пути и вместо этого его жестко закодированный с помощью escape-последовательности, он не работает. Каков мой абсолютный путь? –

Смежные вопросы