Index: trunk/src/com/drew/imaging/jpeg/JpegMetadataReader.java
===================================================================
--- trunk/src/com/drew/imaging/jpeg/JpegMetadataReader.java	(revision 8132)
+++ trunk/src/com/drew/imaging/jpeg/JpegMetadataReader.java	(revision 8243)
@@ -35,4 +35,5 @@
 //import com.drew.metadata.adobe.AdobeJpegReader;
 import com.drew.metadata.exif.ExifReader;
+import com.drew.metadata.file.FileMetadataReader;
 //import com.drew.metadata.icc.IccReader;
 import com.drew.metadata.iptc.IptcReader;
@@ -79,13 +80,13 @@
     public static Metadata readMetadata(@NotNull File file, @Nullable Iterable<JpegSegmentMetadataReader> readers) throws JpegProcessingException, IOException
     {
-        InputStream inputStream = null;
-        try
-        {
-            inputStream = new FileInputStream(file);
-            return readMetadata(inputStream, readers);
+        InputStream inputStream = new FileInputStream(file);
+        Metadata metadata;
+        try {
+            metadata = readMetadata(inputStream, readers);
         } finally {
-            if (inputStream != null)
-                inputStream.close();
+            inputStream.close();
         }
+        new FileMetadataReader().read(file, metadata);
+        return metadata;
     }
 
@@ -123,9 +124,5 @@
         for (JpegSegmentMetadataReader reader : readers) {
             for (JpegSegmentType segmentType : reader.getSegmentTypes()) {
-                for (byte[] segmentBytes : segmentData.getSegments(segmentType)) {
-                    if (reader.canProcess(segmentBytes, segmentType)) {
-                        reader.extract(segmentBytes, metadata, segmentType);
-                    }
-                }
+                reader.readJpegSegments(segmentData.getSegments(segmentType), metadata, segmentType);
             }
         }
