package de.fuberlin.projecta.lexer.io;
import java.io.IOException;
import de.fuberlin.projecta.utils.IOUtils;
public class FileCharStream implements ICharStream {
private StringCharStream stream = null;
/**
* Read the contents of a file
*
* Currently reads the entire file into memory and internally uses
* StringCharStream
*
* @param path
* Path to file
*/
public FileCharStream(String path) {
String data;
try {
data = IOUtils.readFile(path);
} catch (IOException e) {
// do nothing, data stays empty
data = "";
}
stream = new StringCharStream(data);
}
@Override
public int consumeChars(int numberOfChars) {
return stream.consumeChars(numberOfChars);
}
@Override
public String getNextChars(int numberOfChars) {
return stream.getNextChars(numberOfChars);
}
@Override
public int getOffset() {
return stream.getOffset();
}
@Override
public boolean isEmpty() {
return stream.isEmpty();
}
@Override
public void resetOffset() {
stream.resetOffset();
}
}