【问题标题】:How can I get the total size of my attachment如何获得附件的总大小
【发布时间】:2023-04-11 09:01:01
【问题描述】:

我在获取邮件附件大小时遇到​​问题。因此无法为进度条提供正确的参数(通过 publishProgress)。任何帮助将不胜感激。

下面是我正在使用的代码:

    try{
            store = s.getStore("imaps");
            store.connect("imap.gmail.com", "myemail@gmail.com", "password");
            Folder inbox = store.getFolder("Inbox"); //Shantivan Rosary
            inbox.open(Folder.READ_ONLY);
            msgs = inbox.getMessages();
            m=(Multipart)msgs[inbox.getMessageCount()-1].getContent(); //Getting the newest email. Assuming it has only one attachment. You can extend
            for(int i=0;i<m.getCount();i++){
                    bp = m.getBodyPart(i);
                    disposition = bp.getDisposition();
                    if(disposition!=null && (disposition.equals("ATTACHMENT"))){
                            fileName = bp.getFileName();
                            base64dec = (InputStream)bp.getContent();
                            OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory()+"/"+fileName);
                            byte data[] = new byte[8192];
                            long total = 0;
                            while ((count = base64dec.read(data)) != -1){
                                    total += count;
                                    output.write(data, 0, count);
                                    publishProgress((int)total);
                            }
                            output.flush();
                            output.close();base64dec.close();
                    }
            }
    }catch(Exception e){
            errorMsg += "\nError: "+e.toString();
            Log.e("MyError:",e.toString());
    }

【问题讨论】:

    标签: android filesize


    【解决方案1】:

    您可以使用以下方法轻松找到下载的电子邮件文件的大小(以字节为单位):

    File file=new File(Environment.getExternalStorageDirectory(), "example.txt");
    long length=file.length();//returns size in bytes 
    

    相关链接: Get the file size in android sdk?

    编辑

    要在下载前获取文件大小,请检查以下内容

    How to know the size of a file before downloading it?

    Trying to get downloading file size, but get an error

    我认为这些链接会对您有所帮助。

    希望对您有所帮助。

    【讨论】:

    • No Rachita... 文件正在生成,我在 Progressbar 中发布进度,所以我需要提前获取文件大小;不是在创建它之后。
    • 我使用 bp.getSize() 来获取大小。但这并没有给出正确的答案。实际文件大小为 2097152,而 bp.getSize() 给我 2883928。这导致进度条在 74% 左右消失。知道有什么问题/遗漏了吗?
    • 抱歉误解了您的问题。我已经编辑了我的答案并添加了获取下载大小的链接。请检查它们。
    • 如果你仔细看我的代码你会发现我不能使用 getContentLength();因为我没有使用 http:// 连接进行连接。在我正在使用的代码中获取文件大小的任何其他方式?
    猜你喜欢
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2011-01-29
    • 2014-03-04
    • 2014-03-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多