def save!
      begin
        case filename
        when STDOUT_FLAG
          $stdout.write(contents)
        else
          ::File.open(@filename,"w") do |f|
            f.write(contents)
          end
        end
        @dirty = false
      rescue => e
        raise FileAccessError, "Error saving file #{@filename} : #{e.message}"
      end
    end
def save!
      begin
        case filename
        when STDOUT_FLAG
          $stdout.write(contents)
        else
          ::File.open(@filename,"w") do |f|
            f.write(contents)
          end
        end
        @dirty = false
      rescue => e
        raise FileAccessError, "Error saving file #{@filename} : #{e.message}"
      end
    end
Public: Write out the file to filename from #open.
 This will write out the whole file at once. If writing to a filesystem
 file this overwrites the whole file.

 Example

     df.save!

 Returns nothing
 Raises FileAccessError if there was a problem writing the file