HttpURLConnection setChunkedStreamingMode()

在使用HttpURLConnection.setChunkedStreamingMode()的时候,设定了块大小为:10240,也就是10K,

然而很偶然的发现,再上传大部分文件的时候正常,但是上传一个800K作用的文件时,上传之后,打开时文件时损坏的了

 将块的大小改一个值,例如1024*1024,就解决了。。。表示很操蛋。。。

后来发现是处理流的地方有问题。

 

下面是完整的httpurlconnection的使用:

                        URL u = new URL(url);
			HttpURLConnection conn = (HttpURLConnection) u.openConnection();
			conn.setDoOutput(true);
			conn.setDoInput(true);
			conn.setUseCaches(false);
			conn.setRequestMethod("POST");
			conn.setRequestProperty("Connection", "Keep-Alive");
			conn.setRequestProperty("Charsert", "UTF-8");
			conn.setRequestProperty("Cookie", "JSESSIONID="+paramObj.getKey());
			conn.setConnectTimeout(5000);
			conn.setReadTimeout(5000);
			//指定流的大小,当内容达到这个值的时候就把流输出
			conn.setChunkedStreamingMode(20*1024);
			BufferedOutputStream out = new BufferedOutputStream(conn.getOutputStream(),20480);


Android 的集合类主要包括 List、Set、Map 等,它们都是用来存储数据的。List 是有序的集合,可以存储重复的元素;Set 是无序的集合,不允许存储重复的元素;Map 是一种键值对存储的数据结构,可以通过键来获取值。 Android 的 IO 流主要用来进行文件的读写操作。Java 中的 IO 流主要分为字节流和字符流。字节流主要用来操作二进制文件,字符流主要用来操作文本文件。在 Android 中,FileInputStream 和 FileOutputStream 是字节流,用于读写二进制文件;FileReader 和 FileWriter 是字符流,用于读写文本文件。 Android 的多线程编程可以使用 Java 中的 Thread 类来实现。但是在 Android 中,应该使用异步任务 AsyncTask 来进行多线程编程。这是因为在 Android 中,主线程负责界面的绘制和事件响应,如果在主线程中进行耗时操作,会导致界面卡顿,用户体验不好。而 AsyncTask 可以在后台线程中执行耗时操作,同时也可以更新 UI。 Android 的断点上传下载一般使用 HttpURLConnection 来实现。在上传文件时,可以使用 HttpURLConnectionsetChunkedStreamingMode 方法来进行分块上传,从而支持断点续传。在下载文件时,可以使用 HttpURLConnection 获取输入流,然后使用 RandomAccessFile 进行随机访问,从而实现断点续传。 Android 的线程池可以使用 Java 中的 Executor 和 ExecutorService 接口来实现。可以通过 ThreadPoolExecutor 类来创建线程池。线程池可以有效地利用线程资源,提高程序的效率。同时也可以控制线程的数量,避免线程数量过多导致程序崩溃。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值