Should this function cache? (I.E. always return the same FileOutputStream) or fail if opened twice? (especially if you want to avoid race conditions?)