You can read it into some type, but none of the collections, since they are poorly designed. Instead you'll have to write your own type that is "lazily evaluated" (I have written many such types released under the CPL) - since actually, how you read your file is dependent entirely on what you do with that file.
Haskell is a lazily evaluated pure FP language. Take a look at its readFile function:
http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3AreadFile The readFile function reads a file and returns the contents of the file as a
string. The file is read lazily, on demand, as with getContents.
Does this mean that the entire String exists in memory when this function is itself evaluated? Absolutely not. You can replicate exactly this behaviour in Java and in some ways, the core API has done so even if not explicitly stated and more often than not, in a horribly contrived manner.
In short, you'll have to provide the case for what you are actually going to do with the file to provide a more thorough answer, but until then, the answer is "read it into a lazily evaluated structure (of course!)".