下载大小大于可用流/文件大小。 (阿莎 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)的主要内容,如果未能解决你的问题,请参考以下文章
我的块大小中没有足够的块 - PHP 下载脚本导致 20% 的文件大小下载