首页 > 编程知识 正文

什么是字节流?什么是字符流?他们之间的特点是什么?,什么是字节流传输

时间:2023-05-05 09:56:22 阅读:227953 作者:786

字节流:
InputStream:是表示字节输入流的所有类的超类。
     |--- FileInputStream:从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。
     |--- FilterInputStream:包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。
        |--- BufferedInputStream:该类实现缓冲的输入流。
        |--- Stream:
     |--- ObjectInputStream:
     |--- PipedInputStream:
-----------------------------------------------
OutputStream:此抽象类是表示输出字节流的所有类的超类。
     |--- FileOutputStream:文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。
     |--- FilterOutputStream:此类是过滤输出流的所有类的超类。
        |--- BufferedOutputStream:该类实现缓冲的输出流。
        |--- PrintStream:
        |--- DataOutputStream:
     |--- ObjectOutputStream:
     |--- PipedOutputStream:
--------------------------------
缓冲区是提高效率用的,给谁提高呢?
BufferedWriter(将流和缓冲区结合):是给字符输出流提高效率用的,那就意味着,缓冲区对象建立时,必须要先有流对象。明确要提高具体的流对象的效率。
FileWriter fw = new FileWriter("bufdemo.txt");
BufferedWriter bufw = new BufferedWriter(fw);//让缓冲区和指定流相关联。
for(int x=0; x<4; x++){
bufw.write(x+"abc");
bufw.newLine(); //写入一个换行符,这个换行符可以依据平台的不同写入不同的换行符。
bufw.flush();//对缓冲区进行刷新,可以让数据到目的地中。
}
bufw.close();//关闭缓冲区,其实就是在关闭具体的流。
-----------------------------
BufferedReader:
FileReader fr = new FileReader("bufdemo.txt");
BufferedReader bufr  = new BufferedReader(fr);
String line = null;
while((line=bufr.readLine())!=null){  //readLine方法返回的时候是不带换行符的。
System.out.println(line);
}
bufr.close();
-----------------------------
//记住,只要一读取键盘录入,就用这句话。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//将读取到的从键盘输入的字节转化成字符存在流中,并将其放入缓冲区
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));//输出到控制台
String line = null;
while((line=bufr.readLine())!=null){
if("over".equals(line))
break;
bufw.write(line.toUpperCase());//将输入的字符转成大写字符输出
bufw.newLine();//换行
bufw.flush();
}
bufw.close();
bufr.close();

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。