0

I have photos in the phone device. I want to get the byte[] value of a photo. I use this code to get it :

fcDir = (FileConnection) Connector.open("file:///"+pRoot+photoDirectory+"/", Connector.READ);
                            if (fcDir.exists())
                            {
                                Enumeration filelist = fcDir.list("*", false);
                                while (filelist.hasMoreElements())
                                {
                                    String fileName = (String) filelist.nextElement();
                                    fcFile = (FileConnection) Connector.open("file:///"+pRoot+photoDirectory+"/"+fileName, Connector.READ);
                                    dis = fcFile.openDataInputStream();
                                    byte[] rawImg = new byte[10240];
                                    dis.readFully(rawImg);
                                    Image tmpImg = Image.createImage(rawImg, 0, rawImg.length);
                                    new Fimage(tmpImg).show();
                                }
                            }

The Fimage LWUIT Form is shown successfully and it has the Image tmpImg as its background image : not all the Form is occupyied by the Image but only 3/4 of the Form.

My problem is that I do not know what number to set exactly for the argument at the line byte[] rawImg = new byte[10240]; . I set the argument to 10240 , but it is not very clever. So how to set exactly this number ?

  • 2
    See whether there's a way to get the file length from the FileConnection object - then initialise the byte array using that length. – mcfinnigan Sep 09 '11 at 14:13

1 Answers1

0

The FileConnection class has a method fileSize() -- call it, and use the result as the size for the array.

Ernest Friedman-Hill
  • 80,601
  • 10
  • 150
  • 186