通过ObjectOutputStream发送文件,然后将其保存在Java中?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了通过ObjectOutputStream发送文件,然后将其保存在Java中?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1246字,纯文字阅读大概需要2分钟。
内容图文
![通过ObjectOutputStream发送文件,然后将其保存在Java中?](/upload/InfoBanner/zyjiaocheng/760/77805fe7b4ee4d709d385d5fae74d0f7.jpg)
我有这个简单的服务器/客户端应用程序我正在尝试让服务器通过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);
内容总结
以上是互联网集市为您收集整理的通过ObjectOutputStream发送文件,然后将其保存在Java中?全部内容,希望文章能够帮你解决通过ObjectOutputStream发送文件,然后将其保存在Java中?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。