【发布时间】:2012-04-06 18:08:32
【问题描述】:
我有一些客户端服务器套接字代码,并且正在 Windows 7 机器和 SUSE Linux 机器之间传输二进制文件。当我将文件从 Win7 传输到 Linux 时,它们最终得到相同的 MD5 校验和,所以我知道它们是相同的。但是当我从Linux转到Win7时,校验和不一致,说明文件没有正确传输。
有人遇到这个吗?我用的是 ObjectOutputStreams 和 DataInputStreams ,两边的代码是一样的。
// connect socket to server socket, etc
//........
//=======================
// read the file
try {
size = file.length();
byteArr = new byte[(int) size];
dis = new DataInputStream(new FileInputStream(file));
dis.read(byteArr, 0, byteArr.length);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
//=======================
// then send it
try {
oos.writeObject(byteArr);
oos.flush();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
// then close oos, dis, etc
【问题讨论】:
-
你不想尝试使用FileUtils 吗?
-
我对 FileUtils 库一无所知。它有专门用于传输二进制文件的方法吗?
标签: java sockets file-upload md5 binaryfiles