All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.berkeley.nlp.util.ObjectReader Maven / Gradle / Ivy

Go to download

The Berkeley parser analyzes the grammatical structure of natural language using probabilistic context-free grammars (PCFGs).

The newest version!
/**
 * 
 */
package edu.berkeley.nlp.util;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.util.Arrays;

import edu.berkeley.nlp.util.Logger;

/**
 * @author dburkett
 *
 */
public class ObjectReader {
	private final File folder;
	private final String[] files;
	
	private ObjectInputStream currentStream = null;
	private int currentIndex = -1;
	private boolean currentStreamHasNext = false;
	
	public ObjectReader(File folder, final String filenameFilter) {
		this.folder = folder;
		files = folder.list(new FilenameFilter() {
			public boolean accept(File dir, String name) {
				return name.contains(filenameFilter);
			}
		});
		Arrays.sort(files);
		openNextStream();
	}
	
	public void reset() {
		currentIndex = -1;
		openNextStream();
	}

	private void openNextStream() {
		try {
			if (currentStream != null) {
				currentStream.close();
				currentStream = null;
			}
			currentIndex++;
			if (currentIndex < files.length) {
				currentStream = IOUtils.openObjIn(new File(folder, files[currentIndex]));
				currentStreamHasNext = currentStream.readBoolean();
			}
		} catch(IOException e) {
			Logger.err("Error opening forest file: " + e);
			currentStream = null;
		}
	}

	@SuppressWarnings("unchecked")
	public T getNextObject() {
		try {
			while (!currentStreamHasNext && currentStream != null) {
				openNextStream();
			}
			if (currentStream == null) {
				return null;
			}
			T nextObject = (T)currentStream.readObject();
			currentStreamHasNext = currentStream.readBoolean();
			return nextObject;
		} catch(Exception e) {
			Logger.err("Error reading object: " + e);
			return null;
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy