Java 将对象数组保存到文本文件
我正在尝试将数组对象(房间)保存到.txt文件中。我不太熟悉序列化,但我已经尽可能地使用它将对象写入文件。但是,我每次都会收到以下错误代码:Java 将对象数组保存到文本文件,java,arrays,object,Java,Arrays,Object,我正在尝试将数组对象(房间)保存到.txt文件中。我不太熟悉序列化,但我已经尽可能地使用它将对象写入文件。但是,我每次都会收到以下错误代码: java.io.NotSerializableException: hotelobjects.Room at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) at java.io.ObjectOutputStream.writeArray(ObjectOutputS
java.io.NotSerializableException: hotelobjects.Room
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at hotelobjects.HotelObjects.storeData(HotelObjects.java:81)
at hotelobjects.HotelObjects.main(HotelObjects.java:50)
这是主要代码:
public class HotelObjects {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
String command;
Scanner input = new Scanner(System.in);
Room[] myHotel = new Room[10];
for (int x = 0; x < myHotel.length; x++) {
myHotel[x] = new Room();
}
String roomName;
int roomNum = 0;
while (roomNum < 11) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter command : ");
command = input.next();
command = command.toLowerCase();
if (command.charAt(0) == 'v') {
viewCustomers(myHotel);
}
if (command.charAt(0) == 'a') {
addCustomers(myHotel);
}
if (command.charAt(0) == 'e') {
emptyRooms(myHotel);
}
if (command.charAt(0) == 's') {
storeData(myHotel);
}
}
}
private static void viewCustomers(Room hotelRef []) {
for (int x = 0; x < 10; x++) {
System.out.println("room " + x + " occupied by " + hotelRef[x].getName());
}
}
private static void addCustomers(Room myHotel[]) {
String roomName;
int roomNum;
System.out.println("Enter room number (0-10) or 11 to stop:");
Scanner input = new Scanner(System.in);
roomNum = input.nextInt();
System.out.println("Enter name for room " + roomNum + " :");
roomName = input.next();
myHotel[roomNum].setName(roomName);
}
private static void emptyRooms(Room[] myHotel) {
for (int x = 0; x < 10; x++ )
if (myHotel[x].getName().equals("e"))System.out.println("room " + x + " is empty");
}
private static void storeData(Room [] myHotel) {
try{
FileOutputStream fos= new FileOutputStream("C:\\Users\\Ganz\\Documents\\NetBeansProjects\\HotelObjects\\HotelObject.txt");
ObjectOutputStream oos= new ObjectOutputStream(fos);
oos.writeObject(myHotel);
oos.close();
fos.close();
}catch(IOException ioe){
ioe.printStackTrace();
}
}
公共类酒店对象{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args)引发异常{
字符串命令;
扫描仪输入=新扫描仪(System.in);
房间[]myHotel=新房间[10];
对于(int x=0;x
}答案已经在例外消息中。我缺少hotelobjects.Room的代码,但我敢打赌它没有实现可序列化。解决方案是简单地让空间实现可序列化。听起来好像您还没有实现可序列化的
接口
您的房间
类应如下所示:
public class Room implements Serializable{
public Room(){
//...
}
}
你在谷歌上搜索过NotSerializableException
?这是不言自明的。您的类需要实现java.io.Serializable