我对 BufferedOutputStream 有疑问。我想通过套接字连接将 kml 文件从 Android 设备发送到 java 服务器。(连接正常,我已经能够在我的程序的其他部分与 PrintWriter 交换数据)
为了发送我的 kml 文件,我填充了缓冲区。但是当我刷新()它时,什么也没有发生。
int lu = inFile.read();
while(lu != -1){
out.write(lu);
lu = inFile.read();
}
out.flush();
inFile.close();
inFile 是我用来读取 kml 文件的流 out 是我的 BufferedOutputStream 使用我的套接字的 OutputStream
我没有关闭我的对象,但我不想,我不只使用一次。这就是问题所在…… close() 方法发送缓冲区的数据,但也关闭了套接字。flush() 方法不发送缓冲区的数据。
我想在不关闭套接字的情况下刷新缓冲区。
我也尝试使用 mySocket.shutdownOutput();
int lu = inFile.read();
while(lu != -1){
out.write(lu);
lu = inFile.read();
}
out.flush();
mySocket.shutdownOutput();
inFile.close();
这个方法关闭我的流并保持我的套接字打开,这就是我想要的。但是当我尝试打开一个新的输出流时,异常 java.net.SocketException: Socket output is shutdown
那么,如何在不关闭我的 sokcet 的情况下刷新我的缓冲区无法打开新的输出流?