java⾥的字节流与字符流(具体使⽤场景浅析)
java⾥的字节流与字符流
我们在Java项⽬中经常⽤到⼀些及其相似的类及其⽅法,例如
InputSream,OutputStream,InputStreamReader,OutputStreamReader,BufferedReader ,BufferedWriter以及相应的⽂件输⼊输出流,看到这么多难免有些糊涂,不知道他们是⽤来⼲什么的,也容易记混。
⾸先来讲Java⾥的流有两⼤类,字节流和字符流。
1.Java的字节流
InputStream是所有字节输⼊流的祖先,⽽OutputStream是所有字节输出流的祖先。
2.Java的字符流
Reader是所有读取字符串输⼊流的祖先,⽽writer是所有输出字符串的祖先。
InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new
那它们之间有没有配合使⽤的时候喃?或者说它们的具体使⽤场景是怎样的?
我们这⾥⼀个Java爬⾍为例⼦来分析⼀下。
URL url =new URL(address);
InputStream in = url.openStream();
InputStreamReader isr =new InputStreamReader(in);
BufferedReader br =new BufferedReader(isr);
String line;
StringBuffer sb =new StringBuffer();抽象类的使用
while((line = br.readLine())!= null){
sb.append(line,0, line.length());
sb.append('\n');
}
我们在⽤Java做爬⾍的时候经常会使⽤URL类,当使⽤url类的openStream()⽅法时,会返回⼀个InputStream类型的对象,但是我们在使⽤IO流是往往使⽤缓冲流因为它具有更强的读写能⼒,同时能够节约资源和时间。但是BufferedReader和BufferedWriter⼆者的源和⽬的地必须是字符输⼊流和字符输出流。所以我们这时候就必须将字节流转换为字符流。所以我们在⼯程中往往同时使⽤字节流,字符流以及缓冲流,我们在学习和记忆是也应该把他们结合起来,这时候只要有⼀个简单的例⼦就能很好的理解和记忆以及使⽤它们!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论