The File class has methods for checking for the existence and attributes of a file, such as whether it can be read or written and whether it's a directory.
File system attributes like filename and pathname separators are queryable as well.
The first reason is to define types as an aid to portability. This is not an issue in Java, where types are of uniform sizes. For example, an int is 32 bits, and a long 64. Java has no-user visible pointers, nor does it have unsigned modifiers. So a typedef here doesn't buy very much.