What you could also do would be (if its within your control) have the application that is creating the file touch some sort of control file that would indicate when it is done writing the file. Your FTP could then look for the presence of that file and assume that the file you want is finished being written. Just another way to do it, as someone else mentioned, you can also have your script check the file size to make sure it has stopped growing.
What happens if something needs to write into a file after you have started downloading it but are not yet done downloading the file?