The FileObject can be written.
Test to see if we can write to this file. This should not create a file, only getOutputStream should do this. TODO: someday we'll want a locking mechanism.
push the changes to the remote server. For local files, this does nothing, unless it is a local git repository.
delete the file
Get the output stream. The client who has requested the stream must close the stream.