我试图保存游戏状态但没有成功。
public void saveGame(){
board = GameBoard.this;
try (
OutputStream file = new FileOutputStream(board); <---- error in this line
OutputStream buffer = new BufferedOutputStream(file);
ObjectOutput output = new ObjectOutputStream(buffer);
){
output.writeObject(game);
}
catch(IOException ex){
fLogger.log(Level.SEVERE, "Cannot save.", ex);
}
}
我收到的指示行的错误是它不是一个合适的构造函数。我完全迷失了。有人可以帮我解决这个问题,或者指出我出错的地方。我不熟悉序列化。
答案 0 :(得分:0)
您需要为FileOutputStream
提供一个File
来处理:
OutputStream file = new FileOutputStream(new File("pathToMyFile.txt"));
答案 1 :(得分:0)
从documentation您可以看到有2个参数构造函数:
FileOutputStream(File file)
FileOutputStream(FileDescriptor fdObj)
FileOutputStream(String name)
所以既然你的编译器抱怨并且我不知道GameBoard
是什么(你给你的构造函数提供了什么),请检查你的GameBoard
是否有机会。如果没有,那么你应该对此采取一些措施。
答案 2 :(得分:0)
根据documentation fo FileOutputStream
,FileOutputStream
类有一些构造函数:
File
object File
object and a boolean FileDescriptor
object String
object String
object and a boolean value 由于您使用的是一个带有一个参数的构造函数,因此您使用的是选项1,3或5. board
变量的类型为GameBoard
,而不是{{1 }},File
或FileDescriptor
,因此编译器会告诉您没有与变量类型String
匹配的构造函数。
最简单的方法是为board
构造函数提供要写入的文件名。其他选项包括FileOutputStream
个对象或File
。
答案 3 :(得分:0)
正如它在javadocs中所说,FileOutputStream
期望String
或File
错误消息试图告诉您,您正在尝试将对象传递给它没有的构造函数&# 39; t支持。
我建议你把它写给你想要写的文件名。
其他建议
答案 4 :(得分:0)
有关FileOutputStream的构造函数,请参阅http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html。第一个将完美无缺:
OutputStream fos = new FileOutputStream(new File("/path/object.dat"));