我一直在查看following tutorial并遇到了这段代码,我不明白其目的:
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write( data );
wr.flush();
我不知道上面代码的目的是什么,以及它将这些数据写入...
从我可以收集的内容来看,文档声明它将字符转换为字节......但是它会将其写入某些地方......不知道为什么会这样。
答案 0 :(得分:1)
它将它写入URLConnection
的输出流 - 它基本上用于HTTP请求的主体(当然,假设它是一个HTTP URL)。
答案 1 :(得分:1)
它主要用于将字符流转换为字节流。
字节流和字符流与链接不兼容,因为第一个操作的是8位ASCII字符,另一个操作是16位Unicode字符。要显式链接它们,java.io包中存在两个类InputStreamReader
和OutputStreamWriter
。
InputStreamReader
将字节流与字符流BufferedReader
(在阅读端)链接。
对于OutputStreamWriter
,2字节的字符被编码(转换)为1字节的字节(InputStreamReader
以其他方式 - 字节到字符)。
对于Java程序与服务器端进程交互,它必须能够写入URL,从而向服务器提供数据。它可以通过以下步骤完成此操作:
1.Create a URL.
2.Retrieve the URLConnection object.
3.Set output capability on the URLConnection.
4.Open a connection to the resource.
5.Get an output stream from the connection.
6.Write to the output stream.
7.Close the output stream.
现在在您提供的代码段中,
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
在连接上创建输出流并打开一个 对它的OutputStreamWriter - 步骤5如果URL确实支持输出,那么 此方法返回连接到输入的输出流 服务器端URL的流 - 客户端的输出是 服务器的输入。如果URL不支持输出,则为getOutputStream 抛出UnknownServiceException。
并且
wr.write( data );
wr.close();
wr.flush();
它将所需信息写入输出流并关闭 流。写入客户端输出流的数据是 服务器端的输入。