diff options
author | Rainer Klute <klute@apache.org> | 2003-08-05 20:52:25 +0000 |
---|---|---|
committer | Rainer Klute <klute@apache.org> | 2003-08-05 20:52:25 +0000 |
commit | 53621f0c8c369adab1493cefdb98adc33dfe6987 (patch) | |
tree | 2931f920ddefafa94b54476fd47f7ad6a026ee80 /src/testcases/org/apache/poi/hpsf | |
parent | 4cd47db1b4721523a30bd15b7aae4e2838161e65 (diff) | |
download | poi-53621f0c8c369adab1493cefdb98adc33dfe6987.tar.gz poi-53621f0c8c369adab1493cefdb98adc33dfe6987.zip |
*** empty log message ***
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353291 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/testcases/org/apache/poi/hpsf')
-rw-r--r-- | src/testcases/org/apache/poi/hpsf/basic/Util.java | 73 |
1 files changed, 70 insertions, 3 deletions
diff --git a/src/testcases/org/apache/poi/hpsf/basic/Util.java b/src/testcases/org/apache/poi/hpsf/basic/Util.java index 75e7aa72e5..7c30fd9f07 100644 --- a/src/testcases/org/apache/poi/hpsf/basic/Util.java +++ b/src/testcases/org/apache/poi/hpsf/basic/Util.java @@ -69,6 +69,11 @@ import java.util.LinkedList; import java.util.List; import java.util.Properties; +import org.apache.poi.hpsf.MarkUnsupportedException; +import org.apache.poi.hpsf.NoPropertySetStreamException; +import org.apache.poi.hpsf.PropertySet; +import org.apache.poi.hpsf.PropertySetFactory; +import org.apache.poi.hpsf.UnexpectedPropertySetTypeException; import org.apache.poi.poifs.eventfilesystem.POIFSReader; import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent; import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener; @@ -177,11 +182,11 @@ public class Util { try { - POIFile f = new POIFile(); + final POIFile f = new POIFile(); f.setName(event.getName()); f.setPath(event.getPath()); - InputStream in = event.getStream(); - ByteArrayOutputStream out = new ByteArrayOutputStream(); + final InputStream in = event.getStream(); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); Util.copy(in, out); out.close(); f.setBytes(out.toByteArray()); @@ -214,6 +219,68 @@ public class Util /** + * <p>Read all files from a POI filesystem which are property set streams + * and returns them as an array of {@link org.apache.poi.hpsf.PropertySet} + * instances.</p> + * + * @param poiFs The name of the POI filesystem as seen by the + * operating system. (This is the "filename".) + * + * @return The property sets. The elements are ordered in the same way + * as the files in the POI filesystem. + * + * @exception FileNotFoundException if the file containing the POI + * filesystem does not exist + * + * @exception IOException if an I/O exception occurs + */ + public static POIFile[] readPropertySets(final File poiFs) + throws FileNotFoundException, IOException + { + final List files = new ArrayList(7); + final POIFSReader r = new POIFSReader(); + POIFSReaderListener pfl = new POIFSReaderListener() + { + public void processPOIFSReaderEvent(final POIFSReaderEvent event) + { + try + { + final POIFile f = new POIFile(); + f.setName(event.getName()); + f.setPath(event.getPath()); + final InputStream in = event.getStream(); + if (PropertySet.isPropertySetStream(in)) + { + final ByteArrayOutputStream out = + new ByteArrayOutputStream(); + Util.copy(in, out); + out.close(); + f.setBytes(out.toByteArray()); + files.add(f); + } + } + catch (Exception ex) + { + ex.printStackTrace(); + throw new RuntimeException(ex.getMessage()); + } + } + }; + + /* Register the listener for all POI files. */ + r.registerListener(pfl); + + /* Read the POI filesystem. */ + r.read(new FileInputStream(poiFs)); + POIFile[] result = new POIFile[files.size()]; + for (int i = 0; i < result.length; i++) + result[i] = (POIFile) files.get(i); + return result; + } + + + + /** * <p>Prints the system properties to System.out.</p> */ public static void printSystemProperties() |