通过ObjectOutputStream发送文件,然后将其保存在Java中?
发布时间:2020-12-15 04:58:14 所属栏目:Java 来源:网络整理
导读:我有这个简单的服务器/客户端应用程序我正在尝试让服务器通过OutputStream(FileOutputStream,OutputStream,ObjectOutputStream等)发送文件,并在将其保存到实际文件之前在客户端接收它.问题是,我已经尝试过这样做,但它一直在失败.每当我创建文件并将从服务器
我有这个简单的服务器/客户端应用程序我正在尝试让服务器通过OutputStream(FileOutputStream,OutputStream,ObjectOutputStream等)发送文件,并在将其保存到实际文件之前在客户端接收它.问题是,我已经尝试过这样做,但它一直在失败.每当我创建文件并将从服务器收到的对象写入其中时,我都会得到一个破碎的图像(我只是将它保存为jpg,但这无关紧要).以下是最有可能出现故障的代码部分(您在此处看到的所有看似未声明的对象都已事先声明过):
服务器: ObjectOutputStream outToClient = new ObjectOutputStream( connSocket.getOutputStream()); File imgFile = new File(dir + children[0]); outToClient.writeObject(imgFile); outToClient.flush(); 客户: ObjectInputStream inFromServer = new ObjectInputStream( clientSocket.getInputStream()); ObjectOutputStream saveImage = new ObjectOutputStream( new FileOutputStream("D:/ServerMapCopy/gday.jpg")); saveImage.writeObject(inFromServer.readObject()); 所以,我的问题是我无法在没有损坏文件的情况下正确地通过流获取对象. 解决方法
File对象表示该文件的路径,而不是其实际内容.你应该做的是从该文件中读取字节并通过ObjectOutputStream发送它们.
File f = ... ObjectOutputStream oos = ... byte[] content = Files.readAllBytes(f.toPath); oos.writeObject(content); File f=... ObjectInputStream ois = ... byte[] content = (byte[]) ois.readObject(); Files.write(f.toPath(),content); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |