def open(mode = "r")
      # Fat32 module methods use miqfs instance accessors to touch @boot_sector.
      @mode = mode.downcase
      @de = ifs_getFile(@path, @miqfs)
      unless @de.nil?
        raise "File is directory: '#{@path}'" if @de.isDir?
      end
      if mode.include?("r")
        raise "File not found: '#{@path}'" if @de.nil?
        @data = FileData.new(@de, @miqfs.boot_sector)
      end
      if mode.include?("w")
        @de.delete(@miqfs.boot_sector) unless @de.nil?
        @de, @parentDirCluster = ifs_putFile(@path, @miqfs)
        @data = FileData.new(@de, @miqfs.boot_sector)
      end
      if mode.include?("a")
        @de, @parentDirCluster = ifs_putFile(@path, @miqfs) if @de.nil?
        @data = FileData.new(@de, @miqfs.boot_sector) if @data.nil?
        @data.read
      end
    end
def open(mode = "r")
      # Fat32 module methods use miqfs instance accessors to touch @boot_sector.
      @mode = mode.downcase
      @de = ifs_getFile(@path, @miqfs)
      unless @de.nil?
        raise "File is directory: '#{@path}'" if @de.isDir?
      end
      if mode.include?("r")
        raise "File not found: '#{@path}'" if @de.nil?
        @data = FileData.new(@de, @miqfs.boot_sector)
      end
      if mode.include?("w")
        @de.delete(@miqfs.boot_sector) unless @de.nil?
        @de, @parentDirCluster = ifs_putFile(@path, @miqfs)
        @data = FileData.new(@de, @miqfs.boot_sector)
      end
      if mode.include?("a")
        @de, @parentDirCluster = ifs_putFile(@path, @miqfs) if @de.nil?
        @data = FileData.new(@de, @miqfs.boot_sector) if @data.nil?
        @data.read
      end
    end
NOTE: miqfs will always be an MiqFS instance.
 fs_fileOpen passes 'self' into .. er, 'this'.