2013-05-05 2 views
4

Я пытался, чтобы сохранить изображение до parse.com. Мне нужно преобразовать его в массив байтов. То, как я решил попробовать, это использовать apache commons-io. Он работает неправильно. Это мой фрагмент кода;java.io.FileNotFoundException: /file/path.jpg open failed: ENOENT (Нет такого файла или каталога)

private void saveImage() throws IOException { 
    // TODO Auto-generated method stub 

    InputStream header = new FileInputStream("/ClashMMA/res/drawable-hdpi/beatdown.jpg"); 

    ParseFile file = new ParseFile(toByteArray(header)); 
    try{ 
     file.save(); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    ParseObject displayImage = new ParseObject("displayImage"); 
    displayImage.put("header", file); 
    try{ 
     displayImage.save(); 
    } catch (ParseException e1){ 
     e1.printStackTrace(); 
    } 
} 


private byte[] toByteArray(InputStream header) throws IOException { 
    // TODO Auto-generated method stub 
    ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 
     int l; 
     byte[] data = new byte[1024]; 
     while ((l = header.read(data, 0, data.length)) != -1) { 
      buffer.write(data, 0, l); 
     } 
     buffer.flush(); 
     return buffer.toByteArray(); 

} 

И моя ошибка в этом;

java.io.FileNotFoundException: /ClashMMA/res/drawable-hdpi/beatdown.jpg: open failed: ENOENT (No such file or directory)

Но я уверен, что файл существует, потому что я пошел в свой каталог файлов (в затмении), правой нажал, и нажал на Copy Qualified Name. Которая по существу копирует путь к файлу. Я пробовал несколько других путей, как сразу после моего компьютера, и в моей папке src. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно? Почему он не будет читать файл, когда на самом деле он есть? Подробные объяснения, пожалуйста.

+1

У меня была эта проблема. Я удалил папку, созданную программно, и создал ее вручную, и проблема решена !!! – breceivemail

ответ

5

Файлы в ваших проектах Eclipse не находятся в (реальной или эмулируемой) файловой системе Android, и именно там находится Android FileInputStream. (! С хорошей причине Хост-файл системы для Eclipse, не будет там на реальном устройстве Android.)

Вы в основном есть два варианта:

  • получить их в архив APK, так что вы можете загрузить их с помощью getSystemResourceAsStream: см. How to load image for Android ImageView from classpath?

  • Скопируйте файлы в файловую систему Android, чтобы их могли найти FileInputStream.

+0

Вы можете добавить каждое изображение в папку ресурсов. –

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