# File lib/archive/zip/entry.rb, line 1064
    def file_data
      return @file_data unless @file_data.nil? || @file_data.closed?

      unless raw_data.nil? then
        raw_data.rewind
        @file_data = compression_codec.decompressor(
          encryption_codec.decryptor(raw_data, password)
        )
      else
        if @file_path.nil? then
          simulated_raw_data = BinaryStringIO.new
        else
          simulated_raw_data = ::File.new(@file_path, 'rb')
        end
        # Ensure that the IO-like object can return a data descriptor so that
        # it's possible to verify extraction later if desired.
        @file_data = Zip::Codec::Store.new.decompressor(simulated_raw_data)
      end
      @file_data
    end