ObjectOutputStream和PrintWriter冲突

Jon*_*007 5 java

我有服务器和客户端设置,这基本上是一个基本的文本电子邮件系统.我目前正在使用PrintWriter在服务器和客户端之间发送文本.我正在尝试创建一个基于附件的系统,为此我正在使用ObjectOutputStream.

private static PrintWriter output;
private static ObjectOutputStream outStream;

public ClientHandler(Socket socket) throws IOException
{
    client = socket;
    outStream = new ObjectOutputStream(client.getOutputStream());
    input = new Scanner(client.getInputStream());
    output = new PrintWriter(client.getOutputStream(), true);
}
Run Code Online (Sandbox Code Playgroud)

我目前遇到的问题是,如果我尝试通过输出打印机发送文本,由于某种原因,额外的字符将被添加到发送的文本的开头,这意味着程序无法识别通过打印机传递给客户端的关键字.如果我注释掉outStream对象的创建,问题就会停止.

谁能给我任何建议来尝试解决这个冲突问题?

Con*_*Del 4

这个额外的文本来自对象输出流。

将 ObjectOutputStream 和 PrintStream 附加到同一个输出流基本上是行不通的。您必须想出一个使用其中之一或另一个的解决方案。要仅使用 PrintStream,您可以考虑将对象转换为 JSON 或 XML。另一方面,您可以只使用 ObjectOutputStream 并将字符串写入 ObjectOutputStream