很抱歉把它拖了起来,但我已经好好看看了,我仍然不断得到EOFException。除了以下方法之外,我已经对我的方法进行了评论:
File receivedFileObject;
File newFile = new File("newlyWrittenFile.mp3");
try{
Socket socket = new Socket(SERVER_IP, PORT);
try{
ObjectInputStream incommingData = new ObjectInputStream(socket.getInputStream());
我要做的就是将文件,txt或mp3从服务器传递到客户端 - 我甚至都没有尝试在readObject()
上调用ObjectInputStream
但我仍然得到EOFException类?如何到达我未尝试阅读的文件的末尾?事实上,我希望我试图逐行阅读文本文件,因为我知道如何做到这一点非常好。我只想接收一个Object,将其转换为文件并将其写入文件系统但由于某种原因我的catch块:
} catch (IOException e){
System.out.println("Incomming data assignment error : " + e);
}
打印出来:
发生数据分配错误:java.io.EOFException
我一直在尝试按照this forum post中列出的服务器代码进行操作。基本上从服务器我使用以下行将文件写入客户端:
if (myFile.exists()) {
ObjectOutputStream oos=new ObjectOutputStream(client.getOutputStream());
oos.writeObject(myFile);
}
如果有人可以解释如何解决我觉得愚蠢的错误,我将非常感激 - 提前致谢!
答案 0 :(得分:2)
ObjectOutputStream
用于将java对象序列化为流。你不太可能想要这样做。
如果你想“传递文件”,这可能意味着你想“传递文件的内容”,所以就这样:
FileOutputStream newFile = new FileOutputStream("newlyWrittenFile.mp3");
InputStream input = socket.getInputStream();
byte[] bytes = // pseudo code for reading all bytes from input
newFile.write(bytes); // pseudo code for writing to file
newFile.close();
您可能会发现apache common-io库IOUtils
类方法非常方便您轻松读取和写入数据
答案 1 :(得分:0)