Java - 关于InputStream,InputStreamReader和BufferedReader

Java - 关于InputStream,InputStreamReader和BufferedReader

  InputStreamReader将基于byte的Stream转换为基于char的Reader,此时需要有Charset介入。InputStreamReader有多个构造函数,如果构造函数中没有指定Charset,则转换将按照系统默认的Encoding方式完成,如果指定了Charset,便按照该Charset进行转换。

  BufferedReader继承自Reader类,是对Reader一种封装,或者说是通过decorator模式对Reader类的扩展。Reader只有read方法,没有readLine方法,而BufferedReader有readLine方法,所以通常采用BufferedReader来完成按行读取文件或者命令行。

  有了以上的BufferedReader和InputStreamReader,我们来看看怎么样按行来读取命令行字符,首先要读取字符,我们需要一个Reader,而处理命令行的System.in为InputStream类型,所以此时我们需要将InputStream转换为Reader类型,那么InputStreamReader就派上用场了。

InputStreamReader inputStreamReader = new InputStreamReader(System.in);

  接下来我们还需要按行来读取,而InputStreamReader不提供readLine方法,我们还需要将InputStreamReader转换为BufferedReader:
BufferedReader bufferReader = new BufferedReader(inputStreamReader);

  现在我们便可以按行读取了:
String line = bufferedReader.readLine();

 

在进行Java网络编程时,解析HTTP请求报头是关键步骤之一。推荐您查阅《Java解析HTTP请求报头实战》文档,这本实战教程通过详细的代码示例和解析步骤,将帮助您深入理解解析HTTP报头的过程。 参考资源链接:[Java解析HTTP请求报头实战](https://wenku.csdn.net/doc/6og35kn9s3) 使用`InputStreamReader`和`BufferedReader`是处理HTTP请求报头的常见做法。首先,您需要通过服务器端的Socket或Servlet API获取到输入流(InputStream)。然后,利用`InputStreamReader`和`BufferedReader`对输入流进行封装,以便逐行读取和解析请求头信息。 示例代码如下: ```java // 假设in是通过Socket或Servlet API获得的输入流 InputStreamReader reader = new InputStreamReader(in); BufferedReader bd = new BufferedReader(reader); String line = null; while ((line = bd.readLine()) != null) { if (line.isEmpty()) { break; // 遇到空行则结束读取 } parseHeader(line); // 解析每一行的报头信息 } bd.close(); ``` 在解析过程中,通常会遇到异常情况,比如网络中断或输入流读取错误。建议使用try-catch结构来处理可能发生的`IOException`。例如: ```java try { // 上述代码 } catch (IOException e) { e.printStackTrace(); // 可以添加适当的异常处理逻辑 } ``` 通过`parseHeader`方法,您可以将读取的行拆分成键值对,并进行相应的处理。例如,将请求头的键转换为小写,并存入`Map<String, String>`中进行管理。 学习并实践了这些技术之后,您将能够熟练地在Java中解析HTTP请求报头,并能有效地处理网络编程中出现的各种异常情况。为了进一步提高您的技术水平,建议继续深入学习HTTP协议的细节以及Java IO的高级特性。 参考资源链接:[Java解析HTTP请求报头实战](https://wenku.csdn.net/doc/6og35kn9s3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值