클래스 용 채팅 서버를 만들고 있는데 오프라인 사용자 용 로깅 메시지를 보내고 있습니다. 데이터는 개체로 로그 파일에 추가되며 더 많이 기록하면 크기가 커집니다. 메시지를받은 사용자로 로그인하면 첫 번째로 보낸 메시지 만 반환됩니다. 나는 이것으로 많은 시간을 보냈다. 내가 무엇을 놓치고 있는지 알아낼 수 없다.개체 출력 및 입력 문제가 입력의 첫 번째 줄만 인쇄합니다.
입력 :
if (exists)
ObjectInputStream in = null;
try{
in = new ObjectInputStream(new FileInputStream(uLog));
Message msgs;
Object obj = null;
while ((obj = in.readObject()) != null)
{
msgs = (Message) obj;
user.writeToUser(new Message("POST", "Offline Message from", msgs.getTo() +" "+ msgs.getText()));
}
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
boolean success = uLog.delete();
if (!success)
throw new IllegalArgumentException("Delete: deletion failed");
}
아웃풋 : 당신은 그냥 같은 ObjectOutputStream에에 추가 할 수 있다고 생각하지 않습니다
if(!usersList.getUserByName(msg.getTo()).getOnlineStatus())
{
ObjectOutputStream out;
try{
out = new ObjectOutputStream(new FileOutputStream(msg.getTo() + ".log", true));
user.writeToUser(new Message("PRIVATE", user.getUserName(), msg.getTo(), msg.getText()));
out.writeObject(new Message("PRIVATE", msg.getTo(), user.getUserName(), msg.getText()));
out.close();
}
catch (IOException e){
System.out.println("Exception");
}
}
바이트 입력을 받아서 ObjectInputStream으로 래핑하는 방법을 모르겠습니다. 이것에 대한 조언? – Joshua
당신이하고 있습니다. FileInputStream은 바이트의 InputStream입니다. 그냥 계속 처리해 줘. –