android开发,socket发送文件,read阻塞,得不到文件尾-1

这是我的接收文件代码:开始可以读取到-1,但是现在又读取不到了,所以才加上红色字解决的(注释的代码)

                    File file = new File(mfilePath,"chetou."+entity.mediaType);
                    if(!file.exists())
                        file.createNewFile();
                    FileOutputStream fos =new FileOutputStream(file);  //将接收的文件保存到对应的路径
                    byte[] sendBytes =new byte[1024];
                    int transLen =0;
                    Log.v(TAG, "----开始接收文件<" + entity.params +">,文件大小为<" + fileLength +">----");
                    while(true){
                        int read =0;
                        read = dis.read(sendBytes);
                        Log.v(TAG, "read="+read);
                        if(read == -1)
                            break;
                        transLen += read;
                        Log.v(TAG, "接收文件进度" +100 * transLen/fileLength +"%...");
                        fos.write(sendBytes,0, read);
                        fos.flush();
                        /*if(transLen==fileLength)
                            break;*/
                    }
                    Log.v(TAG, "----接收文件<" + entity.params +">成功-------1");
                    entity.filePath = mfilePath+"/chetou."+entity.mediaType; //将下载下来的文件名字赋值给entity.filePath
                    Log.v(TAG, "----接收文件<" + entity.params +">成功-------2");

 

发送文件的代码:

//传输文件
            FileInputStream fis =new FileInputStream(file);
            byte[] sendBytes =new byte[1024];
            int length =0;
            while((length = fis.read(sendBytes,0, sendBytes.length)) >0){
                dos.write(sendBytes,0, length);
                dos.flush();
            }
            fis.close();
            Log.v(TAG, "发送完文件数据");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值