code: public long[] fileProgress(FileProgressFlags flags) {
          int64_vector v = new int64_vector();
          th.file_progress(v, flags.swig());
          return Vectors.int64_vector2longs(v);
      }
docs: This function fills in the supplied vector with the number of
  bytes downloaded of each file in this torrent. The progress values are
  ordered the same as the files in the torrent_info. This operation is
  not very cheap. Its complexity is *O(n + mj)*. Where *n* is the number
  of files, *m* is the number of downloading pieces and *j* is the
  number of blocks in a piece.
  <p>
  The ``flags`` parameter can be used to specify the granularity of the
  file progress. If left at the default value of 0, the progress will be
  as accurate as possible, but also more expensive to calculate. If
  ``torrent_handle::piece_granularity`` is specified, the progress will
  be specified in piece granularity. i.e. only pieces that have been
  fully downloaded and passed the hash check count. When specifying
  piece granularity, the operation is a lot cheaper, since libtorrent
  already keeps track of this internally and no calculation is required.
  
  @param flags
  @return the file progress