Я хочу показать размер загружаемого файла во время веб-службы. Поэтому я использовал следующие две ссылки: HttpClient Post with progress and MultipartEntityBuilder, gradle-hockeyapp-plugin, где я нашел класс ProgressHttpEntityWrapper.java
. Используя этот класс, я нашел размер загружаемого файла. Использование метода ниже:Фактический размер файла и размер загружаемого файла различаются. Android
public String getFileSize(long size) {
if (size <= 0)
return "0";
final String[] units = new String[] { mContext.getResources().getString(R.string.bytes), mContext.getResources().getString(R.string.kilo_bytes), mContext.getResources().getString(R.string.mega_bytes), mContext.getResources().getString(R.string.giga_bytes), mContext.getResources().getString(R.string.tera_bytes) };
int digitGroups = (int) (Math.log10(size)/Math.log10(1024));
return new DecimalFormat("#,##0.#").format(size/Math.pow(1024, digitGroups)) + " " + units[digitGroups];
}
, но при этом он дает неправильный размер файла, отличный от исходного. Как фактические, так и загружаемые файлы могут отличаться.
Например, мой фактический размер файла 297.1 КБ, но при этом общий размер файла составляет 365,5 КБ. Почему фактический размер файла и общий размер файла могут меняться. Не могли бы вы предложить мне какую-нибудь идею?
Вы имеете в виду строку, возвращаемую вашей функцией, не соответствует длине, которую вы передали? – wutzebaer
@wutzebaer Нет, проверьте вторую ссылку, где вы найдете класс ProgressHttpEntityWrapper. В этом классе он возвращает общие байты внутри метода getCurrentProgress(). Это неверно. Его размер зависит от фактического размера файла. – Sangeetha
возможно смещение + len больше tan b.length и, следовательно, записана только часть len? # – wutzebaer