【发布时间】:2015-10-01 14:03:47
【问题描述】:
我有一个客户端和一个服务器。服务器维护一个文件,客户端对其进行请求。 所以,我要做的是
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();
}
}
当我在客户端收到文件时,它会引发 IOException。如果我在创建文件时传递绝对路径,程序就可以工作(客户端和服务器目前在同一台机器上,所以我认为通过套接字传递的是对路径的引用,客户端和服务器都是可以看到)。我的问题是:是否可以直接通过套接字通道将文件作为对象发送,或者我必须将其转换为字节数组并发送该数组?提前谢谢你
【问题讨论】:
-
文件对象是一个
"abstract representation of file and directory pathnames"(javadoc)。所以不,你不能只通过套接字发送它。您可以使用 NIO 来简化流的处理。 -
File确实应该被称为Path,但现在修复它为时已晚。