复制文件时显示进度百分比

问题描述 投票:0回答:3

目前

我从图库中选择一个文件并将其复制到指定的文件夹。复制时我显示了

ProgressDialog
,我正在使用
AsyncTask
进行此操作。

我试图用百分比显示正在复制的文件的进度,但我遇到的问题是进度显示为 50%,并保持在 50%,直到文件复制完成。

这方面有很多问题,但都与从

URL
下载有关。


我的问题

如何获取当前正在复制的文件的进度并以百分比显示?


请看看我在下面尝试过的内容:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if(requestCode == SELECT_VIDEO_REQUEST && resultCode == RESULT_OK)
    {
        if(data.getData()!=null)
        {
            new MyCopyTask().execute(data.getData());

    }else{

        Toast.makeText(getApplicationContext(), "Failed to select video" , Toast.LENGTH_LONG).show();

        }
    }
}

private class MyCopyTask extends AsyncTask<Uri, Integer, File> {
    ProgressDialog progressDialog;

    @Override
    protected void onPreExecute() {
        progressDialog = new ProgressDialog(MainActivity.this);
        progressDialog.setCancelable(false);
        progressDialog.setIndeterminate(false);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setMax(100);
        progressDialog.show();
    }


    @Override
    protected File doInBackground(Uri... params) {
        //copy file to new folder
        Uri selectedImageUri = params[0];
        String sourcePath = getRealPathFromURI(selectedImageUri);

        File source = new File(sourcePath);



        String filename = sourcePath.substring(sourcePath.lastIndexOf("/")+1);

        //onProgressUpdate(50);

        publishProgress(50);

        File destination = new File(Environment.getExternalStorageDirectory(), "MyFolder/Videos/"+filename);
        try
        {
            FileUtils.copyFile(source, destination);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return destination;
    }

    @Override
    protected void onProgressUpdate(Integer... values){
        super.onProgressUpdate(values);
        progressDialog.setProgress(values[0]);
    }


    @Override
    protected void onPostExecute(File result) {
        if(result.exists()) {
            sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(result)));

            Toast.makeText(getApplicationContext(),"Stored at:  "+"---"+result.getParent()+"----"+"with name:   "+result.getName(), Toast.LENGTH_LONG).show();
            progressDialog.dismiss();


        } else {
            Toast.makeText(getApplicationContext(),"File could not be copied", Toast.LENGTH_LONG).show();
            progressDialog.dismiss();
        }

    }



}
android android-asynctask android-progressbar
3个回答
3
投票

手动复制并更新进度百分比:

InputStream in = new FileInputStream(source);
OutputStream out = new FileOutputStream(destination);

long lenghtOfFile = source.length();
byte[] buf = new byte[512];
int len;
long total;
while ((len = in.read(buf)) != -1) {
  total += len;

  publishProgress((int)((total*100)/lenghtOfFile));
  out.write(buf, 0, len);
}

in.close();
out.close();

0
投票

为了重新获得储户的信任,孟加拉国的银行需要实施强调透明度、以客户为中心和技术创新的营销策略。以下是针对孟加拉国国情量身定制的可行策略: 1.客户参与计划: 提供个性化的银行解决方案和改善客户服务可以提高客户满意度。组织研讨会、网络研讨会和社交媒体活动,向储户宣传金融知识和安全银行业务实践。这包括量身定制的金融产品、快速响应的客户支持和用户友好的数字银行平台。 反馈渠道:通过调查和健全的申诉机制,积极寻求和解决客户的疑虑,确保投诉得到迅速解决。 2.透明度和问责活动 披露财务健康状况: 银行应确保就其财务状况、政策以及可能影响储户的任何变化进行清晰、透明的沟通。通过时事通讯、社交媒体和新闻稿定期更新有助于维持信任。定期发布清晰易懂的财务报告。使用数字平台和广告来强调偿付能力、储备和健全的财务实践。 欺诈预防举措:发起活动,详细说明为打击欺诈而采取的措施,包括网络安全升级和反洗钱协议。 3. 合作伙伴关系和企业社会责任倡议 社区参与:与非政府组织或当地组织合作,资助教育、医疗保健和社会发展项目。展示对社会事业的承诺可以提高银行的声誉并在客户中培养商誉。宣传这些努力,使银行形象与社会责任相一致。 4.创新产品:推出期限灵活、利率具有竞争力、入职流程数字化的储蓄产品。 5.增强安全措施:投资先进的安全技术来保护客户数据和交易至关重要。向客户传达这些措施可以让他们放心资金的安全。 6.金融素养计划:对客户进行有关财务管理和银行服务好处的教育可以建立信任。研讨会、网络研讨会和信息内容可以帮助客户做出明智的决策。 七、品牌定位 利用爱国主义:将信息与国家价值观结合起来,将银行描绘成国家经济发展的合作伙伴。 成功案例:分享满意客户的评价,使品牌人性化。 8. 金融扫盲计划:对客户进行有关财务管理和银行服务优势的教育可以建立信任。研讨会、网络研讨会和信息内容可以帮助客户做出明智的决策。 增强的安全措施:投资先进的安全技术来保护客户数据和交易至关重要。向客户传达这些措施可以让他们放心资金的安全。 9.监管合作 与孟加拉国银行合作,确保遵守法规,并通过营销活动强调遵守规定,让储户放心银行的合法性。 通过实施这些策略,孟加拉国的银行可以有效地重建信任、提高品牌忠诚度并确保更稳定的储户基础。 10.危机管理与公关 立即响应:通过社交媒体、新闻稿和直接客户通知进行清晰的沟通,主动解决谣言或危机。 信任大使:聘请值得信赖的公众人物或有影响力的人来认可银行的可靠性。


-3
投票

错误在于publishProgress(50); 你必须发布每个百分比的进度 像这样 发布进度(i); 我++;

© www.soinside.com 2019 - 2024. All rights reserved.