各位,小弟最近在做一个socke发送文件的程序,服务器端接收到文件就写文件,客户端发送文件,当发送单个文件时没有问题,发送多个文件时会出现有前一个文件(文件A)结尾部分会写到下一个文件(文件B)的情况,但是文件A是完整的,麻烦各位指教一下是怎么回事?我用的是InputStream 读取的文件内容,OutputStream写入socket中的。
麻烦各位指教一下啦!!
麻烦各位指教一下啦!!
解决方案 »
- 那个自带通讯录的例子叫什么名字
- HAL层的调试方法
- 写Android的一个界面时,点击设置后就退出,截图如下,麻烦高人指点,我都是照书敲得代码!!!我弄了几个小时,也没找出问题的所在,跪求帮忙!!!谢谢!!
- 在Tab里打开新窗口
- android sqlite如何将后面的item移动到第一条?
- android+嵌入式板 和 win7 + PC 的对话。大家看看这个题。
- Android入门初级问题
- Android探讨群 62553058
- android 网络图片 不能显示,求帮忙啊
- ExpandableListView 实现评价回复功能
- if语句判断一直通过不了,我都想砸电脑了,求解大神指导,,,
- 小弟新手,请大神帮忙
public void sendFile(File mFile) { Log.d(TAG,"---------sendFile = " + mFile.getName() + "fileSize = " + mFile.length()); try { Thread.sleep(200); } catch (InterruptedException e2) { // TODO Auto-generated catch block e2.printStackTrace(); }// try {// socketFile.setTcpNoDelay(false);// } catch (SocketException e2) {// // TODO Auto-generated catch block// e2.printStackTrace();// } int i = 0; try { mInStrFile = new FileInputStream(mFile); int readSize = 0; int readFileSize = 0; byte data[] = new byte[1228]; int[] per = new int[2]; do { if(mRunning) { readSize = mInStrFile.read(data); if(readSize != -1) { { mOutStrFile.write(data, 0, readSize); } i++; } } else { Log.d(TAG, "---break"); break; }
//更新界面
// readTotalSize += readSize;// readFileSize += readSize;// Message msg = new Message();// msg.what = ConstData.MSG_AUTO_BACKUPS_PERCENT;// percent = (int) ((long)readTotalSize * 100 / backupsFileSize);// per[i % 2] = percent;// msg.arg1 = percent;// if(per[0] != per[1])// {// mHandler.sendMessage(msg);// } }while(readSize != -1); //socketFile.shutdownOutput(); //mOutStrFile.// socketFile.setTcpNoDelay(true); mOutStrFile.flush();// mInStrFile.close();// mInStrFile = null; Log.d(TAG, "*********" + mFile.getName() + " send succeed, fileSize is:" + readFileSize); //发送文件结束标志 sendMsg(ConstData.AMP_REQUEST_BACKUPS_FILE_END_LEN, ConstData.AMP_REQUEST_BACKUPS_FILE_END, ConstData.FILE_END_FLAG); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); Log.d(TAG,"-------fff"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.d(TAG,"-------iii " + e.toString()); } }
for(int i = 0; i < fileNum; i++)
{
sendFile(fileList(i));
}
在一个循环中调用的sendFilefor(int i = 0; i < fileNum; i++)
{
sendFile(fileList(i));
}