通过java中的套接字发送文件

时间:2015-07-13 10:38:37

标签: java file sockets

我是客户端和服务器。服务器维护一个文件,客户端请求它。 所以,我的工作是

File CONFIGURATION_FILE=new File(configuration.doc);
System.out.println (CONFIGURATION_FILE.exist()); //return true

in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
oos=new ObjectOutputStream(socket.getOutputStream());

String line;
while ((line=in.readLine())!=null) {

  if (line.equals("configuration file"))
        oos.writeObject(CONFIGURATION_FILE);
        oos.flush();
  }
}

当我在客户端收到File时,它会抛出IOException。如果我在创建文件时传递绝对路径,程序有效(客户端和服务器暂时在同一台机器上,所以我认为通过套接字传递的是对路径以及客户端和服务器的引用可以看到)。我的问题是:是否可以直接通过套接字通道发送文件作为对象,或者我必须将其转换为字节数组并发送此数组?提前谢谢

1 个答案:

答案 0 :(得分:0)

您需要将其转换为字节并发送字节。例如,您的服务器可能具有F:/Out.txt中的文件,因此如果您将实际文件对象发送到客户端,则客户端可能根本没有F:驱动器。此外,File类使用了很多本机方法。序列化和反序列化绝不是一个好主意。