评论

收藏

[Java] Java中流的有关知识点详解

编程语言 编程语言 发布于:2021-10-05 16:07 | 阅读数:519 | 评论:0

今天小编就为大家分享一篇关于Java中流的有关知识点详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
什么是流?
流:程序和设备之间连接起来的一根用于数据传输的管道,流就是一根管道。
流的分类:

  • 四大基本抽象流(输入流,输出流,字符流,字节流)
  • 文件流
  • 缓冲流
  • 转换流
  • 数据流     流一定是类,但类不一定是流
  • print流
  • object流
按数据流的方向不同可以分为输入流和输出流。
按处理数据单位不同可以分为字节流和字符流。(一个字符是两个字节)
按功能不同可以分为节点(原始)流和处理(包裹)流。
字节流     字符流
输入流    inputstream    reader
输出流    outputstream   writer
文件流:
读取一个文件内容并将其输出到显示器上,并统计读取出来的字节的个数。字符串来表示操作系统的文件路径时,我们可以使用\\和/两种方式来作为文件夹的路径分隔符。
什么是字节流?
fileinputstream     fileoutputstream
什么是字符流?
filereader     filewriter
eg:
import java.awt.*;
public class test{
   public static void main(string[] args){
  filereader fr=new fileread("d:\\share\\test.java"); 
  filewriter fw=new filewrite("d:/zhangsan.haha");
   int ch;
     ch=fr.read();
 while(-1 != ch){
   fw.write(ch); //将test文件中fr的数据读给程序,再将程序中的数据写给fw的zhangsan文件夹中
   ch=fr.read();
}
  fw.flush();
  fr.close();
  fw.close();
}
}
字符流和字节流的区别:
字节流可以完成所有格式文件的赋值
字符流值可以完成文本文件的复制,却无法完成视频格式文件的复制。
因为字节是不需要解码和编码的,将字节转化为字符才存在解码和编码的问题。
字节流可以从所有格式的设备中读取数据,但字符流只能从文本格式的设备中读写数据。如果通过一个字节流把文本文件的内容输出到显示器上,当输出汉字时就会出现乱码。
缓冲流:buffered
缓冲流就是带有缓冲区的输入输出流
缓冲流可以显著的减少我们对io访问的次数,保护我们的硬盘。
缓冲流本身就是处理流,必须依附于节点流,处理流是包裹在原始节点上的流,相当于包括在管道上的管道。
bufferedinputstream :带缓冲的输出流,允许一次向硬盘写入多个字节的数据
bufferedoutputstream :带缓冲区的输入流,允许一次向程序中读入多个字节的数据
bufferedwriter bufferedreader可以提高读写文本文件内容的速度
eg:
import java.awt.*;//带缓冲区的字节流处理文件的速度要快于不带缓冲区的字节流。
public class test{
   public static void main(string[] args){
   bufferedinputstream bis=new bufferedinputstream (new fileread("d:\\share\\test.java")); 
  bufferedoutputstream bos= new bufferedoutputstream (new filewrite("d:/zhangsan.haha"));
byte[] buf=new byte[1024];
   int len;
   len=bis.read(buf);
 while(-1 != len){
   bos.write(buf,0,len );
   len=bis.read(buf);
}
  bos.flush();
  bos.close();
  bis.close();
}
}
转换流:
outputstreamwrite 流是把outputstrean流转换成writer流的流
inputstreamreader 流是把inputstrean流转换成reader流的流
print流:
print流只有输出,没有输入
printwriter 输出字符    printstream输出字节
printwriter 与 printstream的区别:
printwriter提供了printstream的所有打印方法,既可以封装outputstream,也能封装writer.而printstream只能封装outputstream类型的字节流。
标准输入输出的重定向:
编程实现将键盘输入的数据输入到a文件中,如果输入有误,则把出错信息输出到b文件中。
eg:
public class test{
  public static void main(string[] args){
   printstream psout=null;
   printstream pserror=null;
  scanner sc=null;
   try{
   psout=new printstream("d:/out.txt");
   pserror=new printstream("d:/error.txt");
  sc=new scanner(system.in);
   int num;
   system.setout(psout);
  system.seterr(pserror);
  while(true){
   num=sc.nextint();
  system.out.println(num);
  }
}  
catch(exception e){
  system.out.println("出错信息是:");
  e.printstacktrace();
}
}
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对CodeAE代码之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/mumu1998/article/details/81670581

关注下面的标签,发现更多相似文章