Anu*_*hav 6 java sockets file-io serialization serializable
我正在开发一个项目,它需要将目录信息从一个客户端发送到网络上的另一个客户端。那么告诉我,我可以通过仅发送文件类对象来在另一个客户端上获取此信息吗?请解释一下您选择“是”或“否”的原因。
更新的问题
我正在发布我尝试过的代码......
客户代码:-
public class FileClient{
public static void main(String str[]){
try{
Socket sock = new Socket("10.16.10.82",4000);
/* Socket sock = new Socket("127.0.0.1",4000); */ //for localhost
File f = new File("MyFile.txt");
ObjectOutputStream os = new ObjectOutputStream(sock.getOutputStream());
os.writeObject(f);
os.flush();
os.close();
System.out.println("object sent");
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是服务器代码:-
class FileServer{
public static void main(String str[]){
try{
ServerSocket sock = new ServerSocket(4000);
while(true){
Socket cs = sock.accept();
ObjectInputStream in = new ObjectInputStream(cs.getInputStream());
File f = (File)in.readObject();
System.out.println(f.isDirectory());
System.out.println(f.length()+" bytes read");
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在本地主机上运行服务器,则效果很好,但是当我使用两台不同的机器,一台用于客户端,另一台用于服务器时,输出不同(它显示读取 0 字节)。这似乎是正确的,因为实际文件在远程服务器上不可用。我对文件类的字段感到困惑,即
static private FileSystem fs = FileSystem.getFileSystem() //see javadoc for File
Run Code Online (Sandbox Code Playgroud)
服务器读取 File 对象后得到的具体信息是什么?
小智 3
是的,您可以使用File类引用发送信息,因为它实现了Serializable接口。
有关更多详细信息,请阅读 Java 的File API 参考。
您可以通过以下代码来实现:
String sourcePathFilename = "path.txt";
try {
File file = new File(sourcePathFilename);
FileOutputStream fos = new FileOutputStream(String targetpath);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(file);
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6722 次 |
| 最近记录: |