![JAR search and dependency download from the Maven repository](/logo.png)
edu.berkeley.nlp.util.ObjectReader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of berkeleyparser Show documentation
Show all versions of berkeleyparser Show documentation
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