After some tinkering, the hack work-around that fixes the problem is to use a c# script task to create a blank file with the same filename, then have the data flow task run after that, I am wondering if for some reason there was some kind of lock on the file after creating it, but having a simple File.Create(filename).dispose in c# seems to have fixed the problem.