For performing FTP operations programmatically, I use the Jakarta Commons Net Package. This is a super-cool utility package that makes writting FTP programs a breeze.
The jar file can be downloaded from here.
Tip: The jakarta-commons-net package also requires the ORO package which can be downloaded here.
Another important concept is that of Active and Passive FTP. A good explanation of the differences can be found here.
As a general rule, passive FTP is used as it works behind firewalls too.
The windows FTP can also be run unattended using the '-s' option and specifies a script file that contains the FTP commands.