Depends what you want to do with it. If you don't need to read the whole thing at a time then look at RandomAccessFile which allows you to jump in at a particular byte offset and start reading. I use this on very large files (GB's) to read small sections st a time.
Then I guess you would need to look at something like FileInputStream which shouldn't have a problem reading a large file...the limitation will be how much of that file you need to keep in memory to do something with it. A stream itself should not use the memory up as it reads. What sort of file are you trying to read - ASCII or binary?
Then for the ASCII file consider using java.io.FileReader, which reads in a line at a time as a String and is easy to use. I tend to use along with BufferedReader something like this...