/** * Register a POIFSReaderListener for a document in the root * directory * * @param listener the listener to be registered * @param name the document name * * @exception NullPointerException if listener is null or name is * null or empty * @exception IllegalStateException if read() has already been * called */ public void registerListener(final POIFSReaderListener listener, final String name) { registerListener(listener, null, name); }
private void removeSelectiveListener(final POIFSReaderListener listener) { Set<DocumentDescriptor> selectedDescriptors = selectiveListeners.remove(listener); if (selectedDescriptors != null) { for (DocumentDescriptor selectedDescriptor : selectedDescriptors) { dropDocument(listener, selectedDescriptor); } } }
/** * register for all documents * * @param listener the listener who wants to get all documents */ void registerListener(final POIFSReaderListener listener) { if (!omnivorousListeners.contains(listener)) { // wasn't already listening for everything, so drop // anything listener might have been listening for and // then add the listener to the set of omnivorous // listeners removeSelectiveListener(listener); omnivorousListeners.add(listener); } }
/** * read in files * * @param args names of the files * * @exception IOException if the files can't be read or have invalid content */ public static void main(String args[]) throws IOException { if (args.length == 0) { System.err.println("at least one argument required: input filename(s)"); System.exit(1); } // register for all for (String arg : args) { POIFSReader reader = new POIFSReader(); reader.registerListener(POIFSReader::readEntry); System.out.println("reading " + arg); reader.read(new File(arg)); } }
private static void readEntry(POIFSReaderEvent event) { POIFSDocumentPath path = event.getPath(); StringBuilder sb = new StringBuilder(); try (DocumentInputStream istream = event.getStream()) { sb.setLength(0); int pathLength = path.length(); for (int k = 0; k < pathLength; k++) { sb.append("/").append(path.getComponent(k)); } byte[] data = IOUtils.toByteArray(istream); sb.append("/").append(event.getName()).append(": ").append(data.length).append(" bytes read"); System.out.println(sb); } catch (IOException ignored) { } }
/** * Read from an InputStream and process the documents we get * * @param stream the InputStream from which to read the data * * @exception IOException on errors reading, or on invalid data */ public void read(final InputStream stream) throws IOException { try (POIFSFileSystem poifs = new POIFSFileSystem(stream)) { read(poifs); } }
processProperties(poifs, (DirectoryProperty) property, new_path); } else { POIFSDocument document = null; for (POIFSReaderListener rl : registry.getListeners(path, name)) { if (document == null) { document = new POIFSDocument((DocumentProperty)property, poifs); POIFSReaderEvent pe = new POIFSReaderEvent(dis, path, name); rl.processPOIFSReaderEvent(pe); for (POIFSReaderListener rl : registry.getListeners(path, ".")) { POIFSReaderEvent pe = new POIFSReaderEvent(null, path, null); rl.processPOIFSReaderEvent(pe);
/** * Register a POIFSReaderListener for all documents * * @param listener the listener to be registered * * @exception NullPointerException if listener is null * @exception IllegalStateException if read() has already been * called */ public void registerListener(final POIFSReaderListener listener) { if (listener == null) { throw new NullPointerException(); } if (registryClosed) { throw new IllegalStateException(); } registry.registerListener(listener); }
/** * Read from a NPOIFSFileSystem and process the documents we get * * @param poifs the NPOIFSFileSystem from which to read the data * * @exception IOException on errors reading, or on invalid data */ public void read(final POIFSFileSystem poifs) throws IOException { registryClosed = true; // get property table from the document PropertyTable properties = poifs.getPropertyTable(); // process documents RootProperty root = properties.getRoot(); processProperties(poifs, root, new POIFSDocumentPath()); }
/** * Create a POIFSReader */ public POIFSReader() { registry = new POIFSReaderRegistry(); registryClosed = false; }
public static void main(final String[] args) throws IOException { final String filename = args[0]; POIFSReader r = new POIFSReader(); r.registerListener(new MyPOIFSReaderListener()); r.read(new FileInputStream(filename)); } static class MyPOIFSReaderListener implements POIFSReaderListener { public void processPOIFSReaderEvent(final POIFSReaderEvent event) { final POIFSDocumentPath path = event.getPath(); final String name = event.getName(); final DocumentInputStream stream = event.getStream(); } }
/** * Register a POIFSReaderListener for a document in the root * directory * * @param listener the listener to be registered * @param name the document name * * @exception NullPointerException if listener is null or name is * null or empty * @exception IllegalStateException if read() has already been * called */ public void registerListener(final POIFSReaderListener listener, final String name) { registerListener(listener, null, name); }
/** * Read from a File and process the documents we get * * @param poifsFile the file from which to read the data * * @exception IOException on errors reading, or on invalid data */ public void read(final File poifsFile) throws IOException { try (POIFSFileSystem poifs = new POIFSFileSystem(poifsFile, true)) { read(poifs); } }
private void removeSelectiveListener(final POIFSReaderListener listener) { Set<DocumentDescriptor> selectedDescriptors = selectiveListeners.remove(listener); if (selectedDescriptors != null) { for (DocumentDescriptor selectedDescriptor : selectedDescriptors) { dropDocument(listener, selectedDescriptor); } } }
/** * Register a POIFSReaderListener for a document in the specified * directory * * @param listener the listener to be registered * @param path the document path; if null, the root directory is * assumed * @param name the document name * * @exception NullPointerException if listener is null or name is * null or empty * @exception IllegalStateException if read() has already been * called */ public void registerListener(final POIFSReaderListener listener, final POIFSDocumentPath path, final String name) { if ((listener == null) || (name == null) || (name.length() == 0)) { throw new NullPointerException(); } if (registryClosed) { throw new IllegalStateException(); } registry.registerListener(listener, (path == null) ? new POIFSDocumentPath() : path, name); }
/** * Create a POIFSReader */ public POIFSReader() { registry = new POIFSReaderRegistry(); registryClosed = false; }
/** * Register a POIFSReaderListener for a document in the root * directory * * @param listener the listener to be registered * @param name the document name * * @exception NullPointerException if listener is null or name is * null or empty * @exception IllegalStateException if read() has already been * called */ public void registerListener(final POIFSReaderListener listener, final String name) { registerListener(listener, null, name); }
public Void run() throws Exception { poiFSReader.read(is); return null; } });
/** * Register a POIFSReaderListener for a document in the root * directory * * @param listener the listener to be registered * @param name the document name * * @exception NullPointerException if listener is null or name is * null or empty * @exception IllegalStateException if read() has already been * called */ public void registerListener(final POIFSReaderListener listener, final String name) { registerListener(listener, null, name); }
/** * Read from an InputStream and process the documents we get * * @param stream the InputStream from which to read the data * * @exception IOException on errors reading, or on invalid data */ public void read(final InputStream stream) throws IOException { try (POIFSFileSystem poifs = new POIFSFileSystem(stream)) { read(poifs); } }