Before Java 1.4 it was common practice to work with files by moving bytes around between different InputStreams/OutputStreams.
Since Java 1.4, where NIO got added, it is suggested to use Channels to do the same.
With NIO2 in Java 7, there will be yet another API in java.nio.file which supports doing things like
val source = Paths.get("fooDir/fooFile.txt")
val target = Paths.get("barDir/barFile.txt")
source moveTo target
source createLinkTo target
Are the older ones more or less useless now for file system operations unless you want to touch bytes manually?