public class FileParse
{
public File inFile=null;
+ public int index = 1; // sequence counter for FileParse object created from same data source
protected char suffixSeparator = '#';
/**
* '#' separated string tagged on to end of filename
{
}
/**
+ * Create a new FileParse instance reading from the same datasource starting at the current position.
+ * WARNING! Subsequent reads from either object will affect the read position of the other, but not
+ * the error state.
+ *
+ * @param from
+ */
+ public FileParse(FileParse from) throws IOException
+ {
+ if (from==null)
+ {
+ throw new Error("Implementation error. Null FileParse in copy constructor");
+ }
+ if (from==this)
+ return;
+ index = ++from.index;
+ inFile = from.inFile;
+ suffixSeparator = from.suffixSeparator;
+ suffix = from.suffix;
+ errormessage = from.errormessage; // inherit potential error messages
+ error = false; // reset any error condition.
+ type = from.type;
+ dataIn = from.dataIn;
+ if (dataIn!=null)
+ {
+ mark();
+ }
+ }
+ /**
* Attempt to open a file as a datasource.
* Sets error and errormessage if fileStr was invalid.
* @param fileStr
error=false;
dataIn.mark(READAHEAD_LIMIT);
}
+ /**
+ * mark the current position in the source as start
+ * for the purposes of it being analysed by IdentifyFile().identify
+ * @throws IOException
+ */
+ public void mark() throws IOException
+ {
+ if (dataIn!=null)
+ {
+ dataIn.mark(READAHEAD_LIMIT);
+ } else {
+ throw new IOException("Unitialised Source Stream");
+ }
+ }
public String nextLine()
throws IOException
{
public String getWarningMessage() {
return warningMessage;
}
+ public String getInFile()
+ {
+ if (inFile!=null)
+ {
+ return inFile.getAbsolutePath()+" ("+index+")";
+ }
+ else
+ {
+ return "From Paste + ("+index+")";
+ }
+ }
+
+ public Reader getReader() throws IOException
+ {
+ if (dataIn!=null && dataIn.ready())
+ {
+ return dataIn;
+ }
+ return null;
+ }
}