在两台机器间传输的话,除了txt文档,其余的所有都是文件传过去了,但是打开失败(不论文件大小)。好像在传输过程中文件损坏了......
在一台机器上没这个问题,所有文件不论大小都能传递过去,都能正常打开。
请问各位究竟是哪出问题了?可以的话请解释的详细些,本人是菜鸟,论坛上许多解释看的不是很明白。
下面是我的程序:
http://blog.csdn.net/thdgytyi/archive/2008/12/15/3519213.aspx
抱歉,程序太长,只能放到BLOG中了。
在一台机器上没这个问题,所有文件不论大小都能传递过去,都能正常打开。
请问各位究竟是哪出问题了?可以的话请解释的详细些,本人是菜鸟,论坛上许多解释看的不是很明白。
下面是我的程序:
http://blog.csdn.net/thdgytyi/archive/2008/12/15/3519213.aspx
抱歉,程序太长,只能放到BLOG中了。
解决方案 »
- 一个很奇怪的控制台+try +catch问题,大家帮忙看下!
- 求解答:JNA中函数指针的赋值问题
- swing窗体如何实现字体竖立
- 关于http中的tcp/ip协议中的header的解码
- 一个关于数组的问题 高手来解决
- 一道编程题,向高手求助
- 想下载一个用jsp做的网上宠物店的去哪里下载
- 我已经给了初值了怎么还会nullpointerexception?请大家帮忙!看看怎么改改?谢谢
- JAVA中怎样实现字符串的大小写转换?(完整程序)各位大虾帮帮我?
- 关于Scanner中nextLine()与next()的问题
- java全屏显示
- SCJP 310-055题库及答案详解(中文繁体),有需要的进来看看
int i = 0;
while (in.read(b) != -1) {
fileout.write(b);
}
可能出现读取的字节数不够1024的情况,那么写入文件的时候就会把后面多余的部分也写入文件。改成:byte[] b = new byte[1024];
while(true) {
int readed = in.read(b);
if(readed == -1) {
break;
}
fileout.write(b, 0, readed);
}
要把文件拿到一起比较一下,看你的程序在哪里出了问题。
二进制读写不牵扯到解码问题,主要还是要看每次读写的数据是否一致,
最主要是要分析文件最后一次读写。
while (filein.read(b) != -1) {
outputToSocket.write(b);
}
这个地方也是有问题的,如果读到的不是1024,仍然写了1024,当然也有问题。和socket
读的地方是一样的。
就像2楼所说,应该改一下,
同时应该设置一下,把socket给关了,在客户端和服务器分别添加conn.close()和client.close()
刚开始编写程序,不成熟的地方太多了。多谢大家的帮助。