Not really. If you're using streams, then when you've just opened the FileInputStream (or Reader) and haven't yet read anything, you're at the beginning. After that, you're not. If you're using RandomAccessFile, you can use the poorly-named getFilePointer() method to find out how many bytes you are from the beginning of the file. It's also possible to create your own custom FilterInputStream or FilterReader which counts how many bytes (for InputStreams) or chars (for Readers) have been read, and provides an extra method to access this info.