我正在 Java 中测试 ObjectInputStream
。当我包含 if 语句时,出现 EOF 错误。如何正确测试进入流的对象?输入流对象的类型为byte[]数组
。
if (ObjectInputStream.readObject() instanceof byte[]) {
// what to get the new file
System.out.println("Getting File");
fileFromServer = new File("/Users/joshuataylor/git/swd_jtylor/oral_exam2/27-13_FileRetrieve_Easy/src/output.txt");
byte[] fileContent = (byte[]) ObjectInputStream.readObject();
System.out.println(fileContent.length);
Files.write(fileFromServer.toPath(), fileContent);
ObjectOutputStream.flush();
message = "End Connection";
System.out.println("eof");
}
最佳答案
当前,您正在通过 ObjectInputStream.readObject()
读取两个对象 - 一个在条件中,另一个在 if block 内。
您应该只调用一次ObjectInputStream.readObject()
并将其存储在变量中:
Object obj = ObjectInputStream.readObject();
if (obj instanceof byte[]) {
// what to get the new file
System.out.println("Getting File");
fileFromServer = new File("/Users/joshuataylor/git/swd_jtylor/oral_exam2/27-13_FileRetrieve_Easy/src/output.txt");
byte[] fileContent = (byte[]) obj;
System.out.println(fileContent.length);
Files.write(fileFromServer.toPath(), fileContent);
ObjectOutputStream.flush();
message = "End Connection";
System.out.println("eof");
}
关于java - 如何正确测试java中的instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33798257/