下载大小大于可用流/文件大小。 (阿莎 501,J2ME)

Posted

技术标签:

【中文标题】下载大小大于可用流/文件大小。 (阿莎 501,J2ME)【英文标题】:Download size larger than available stream/file size. (Asha 501, J2ME) 【发布时间】:2013-12-27 15:24:37 【问题描述】:

我正在尝试下载歌曲文件。以下代码(嗯,原始代码,这只是我正在做的一个示例)在 Asha 310 设备上完美运行。但是,在较新的 Asha 501 设备上,生成的下载文件远大于实际文件大小。 如果我使用 512 缓冲区,一个 2.455.870 字节的文件最终会下载 2.505.215 字节,并且它也不会加载。使用 4096 缓冲区,文件最终大小为 3.342.335 字节!!

发生这种情况的原因可能是什么?它在另一部手机上运行良好,而且我正在使用非常合理的缓冲区。

    downloadedFile = (FileConnection) Connector.open(saveLocation+"testing.m4a", Connector.READ_WRITE);

    if (!downloadedFile.exists()) 
        downloadedFile.create();
    

    ops = downloadedFile.openOutputStream();
    hc = (HttpConnection) Connector.open(url);
    hc.setRequestMethod(HttpsConnection.POST);
    hc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

    String postData = "sid=" + session.sid + "&fileid=" + file.getId();

    byte[] request_body = postData.getBytes();

    DataOutputStream dos = null;
    dos = hc.openDataOutputStream();
    for (int i = 0; i < request_body.length; i++) 
        dos.writeByte(request_body[i]);
    

    byte[] buf = new byte[512];

    dis = hc.openInputStream();
    int downloadSize = 0;

    while (dis.read(buf) != -1) 

        ops.write(buf, 0, buf.length);

        downloadedSize += buf.length;            

    

【问题讨论】:

我认为您应该专门针对此查询尝试developer.nokia.com/Community/Discussion/forum.php 我已经在那里发帖了。好吧,在 Asha 小节。但是有点急事,所以我也在这里发帖。 嗯。我以前在 j2me 上工作过。这些问题很常见! 我知道.. 这很痛苦.. 希望我能尽快完成 J2ME。 :( 试试codenameone.com它很整洁 【参考方案1】:

原来缓冲区没有被完全填满,所以每个缓冲区的其余部分没有被填满是垃圾。这就解释了为什么当设置更大的缓冲区时,文件就更大,因为它有更多的垃圾。

http://developer.nokia.com/Community/Discussion/showthread.php/244179-Download-size-larger-than-available-stream-file-size-(Asha-501)

int len;
while((len=dis.read(buf))!=-1)

    ops.write(buf,0,len);
    downloadedSize += len;

编辑:它在旧手机上工作,因为它们一直用实际数据填充整个缓冲区。较新的设备没有。

【讨论】:

以上是关于下载大小大于可用流/文件大小。 (阿莎 501,J2ME)的主要内容,如果未能解决你的问题,请参考以下文章

网页实现文件夹的上传和下载

文件上传控件-如何上传文件-大文件下载

Apk 大小与下载大小

我的块大小中没有足够的块 - PHP 下载脚本导致 20% 的文件大小下载

Azure BlockBlobClient downloadWithResponse 文件大小问题

SpringBoot WEB项目文件夹上传下载解决方案