Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PrintWriter与BufferedWriter_Java_Sockets_Printwriter_Bufferedwriter - Fatal编程技术网

Java PrintWriter与BufferedWriter

Java PrintWriter与BufferedWriter,java,sockets,printwriter,bufferedwriter,Java,Sockets,Printwriter,Bufferedwriter,我正在尝试将字符串从服务器传输到客户端,我正在尝试找到一个解释,为什么当我在服务器中使用PrintWriter时,客户端接收字符串,而当我使用BufferedWriter时,客户端不接收字符串 在我的客户中,我有以下读者/作者: out=new PrintWriter(s.getOutputStream()); in=new BufferedReader(new InputStreamReader(s.getInputStream())); 在我的主要任务中,我将通过下一个调用从服务器接收数据

我正在尝试将字符串从服务器传输到客户端,我正在尝试找到一个解释,为什么当我在服务器中使用
PrintWriter
时,客户端接收字符串,而当我使用
BufferedWriter
时,客户端不接收字符串

在我的客户中,我有以下读者/作者:

out=new PrintWriter(s.getOutputStream());
in=new BufferedReader(new InputStreamReader(s.getInputStream()));
在我的主要任务中,我将通过下一个调用从服务器接收数据:

String sol=in.readLine();
在我的服务器中,我在下一次调用时发送数据(os是我在函数中得到的输出流):

而当我使用
BufferedWriter
时,它不会向客户端发送数据(或者客户端无法接收数据?)


在我的服务器端,Bufferwriter不会将“\n”添加到字符串的末尾,而在我的客户端,我正在尝试使用inputstream读取一行。Printwriter会添加“\n”“在方法println中。感谢@EdwinDalorzo的帮助。

对于缓冲写入程序,您必须使用write方法,对于打印写入程序,也必须使用write方法。从您的代码片段中可以看出相同的结果,但您的读者希望看到“行”,因此我假设您的打印写入程序可能会在发送的数据中添加回车符,而缓冲区没有。但是,这不能从代码中断言。值得一试!因为您使用的是
PrintWriter.println()
,它发送一个行终止符,而
BufferedWriter.write()
,它不发送,并且您使用的是
readLine()
,它会一直阻塞,直到收到行终止符、流结束或发生异常为止。
PrintWriter out= new PrintWriter(os);
out.write("test");
out.flush();
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(os));
out.append("test"); // tried also using out.write
out.flush();