Потому что классы java.io
очень плохо спроектированы. В API очень мало согласованности.
Это раздражает и прискорбно, но вы должны внимательно читать javadocs при использовании этих методов, чтобы точно знать, как они ведут себя в каждом конкретном случае.
Вы можете рассчитывать на JDK7, который имеет совершенно новый API для обработки файлов.