代码片段:
FileInputStream fin=null; try             {      fin=new FileInputStream(picPath);           }         catch(FileNotFoundException e)         {          System.out.println("没有找到文件,请检查文件名或路径是否正确");         System.out.println("程序将要退出");         System.exit(0);         }JPEGImageDecoder jpegDecoder = JPEGCodec.createJPEGDecoder(fin);             try{                 BufferedImage bimage = jpegDecoder.decodeAsBufferedImage();//196行
                 realPicWidth = bimage.getWidth();                 realPicHeight = bimage.getHeight();               }catch(IOException e){                 e.printStackTrace();               }出现了以下问题:
com.sun.image.codec.jpeg.ImageFormatException: Not a JPEG file: starts with 0xff 0xd9 at sun.awt.image.codec.JPEGImageDecoderImpl.readJPEGStream(Native Method) at sun.awt.image.codec.JPEGImageDecoderImpl.decodeAsBufferedImage(Unknown Source) at rtf.CreateRTF.createPic(CreateRTF.java:196) at rtf.impl.main(impl.java:8)

解决方案 »

  1.   

    文件不是一个JPEG文件,即使它的后缀名是.jpg
      

  2.   

    是jpg文件,我确定.这段程序前边是我通过查看该文件的16进制码的方法来判断是否是jpg的语句,
    文件的开头是ffd8.而且该文件在acdsee下看也是jpg
    这段程序访问其它jpg文件时也出现这样的问题!
      

  3.   

    >这段程序前边是我通过查看该文件的16进制码的方法来判断是否是jpg的语句,
    你读的InputStream和JPEGImageDecoder读的不会是同一个input stream吧?
      

  4.   

    对啊,确实是同一个InputStream,我也发现了这个问题,读完后的流好像就不再存在了
    是不是这样呢?