Java中流的有关知识点详解

 更新时间:2019年01月31日 12:01:56   作者:mumu1998  
今天小编就为大家分享一篇关于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();
}
}
}
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • java利用Calendar类打印日历

    java利用Calendar类打印日历

    这篇文章主要为大家详细介绍了java利用Calendar类打印日历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • java程序中指定某个浏览器打开的实现方法

    java程序中指定某个浏览器打开的实现方法

    最近工作中遇到一个需求,是要利用java打开指定浏览器,整理后发现有四种解决的方法,所以想着分享出来,下面这篇文章主要给大家介绍了java程序中指定某个浏览器打开的实现方法,,需要的朋友可以参考下。
    2017-03-03
  • 揭秘SpringBoot!一分钟教你实现配置的动态神刷新

    揭秘SpringBoot!一分钟教你实现配置的动态神刷新

    在今天的指南中,我们将深入探索SpringBoot 动态刷新的强大功能,让你的应用保持最新鲜的状态,想象一下,无需重启,你的应用就能实时更新配置,是不是很酷?跟我一起,让我们揭开这项技术如何让开发变得更加灵活和高效的秘密吧!
    2024-03-03
  • Java管道流实现线程间通信过程解析

    Java管道流实现线程间通信过程解析

    这篇文章主要介绍了Java管道流实现线程间通信过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • springboot使用JdbcTemplate完成对数据库的增删改查功能

    springboot使用JdbcTemplate完成对数据库的增删改查功能

    这篇文章主要介绍了springboot使用JdbcTemplate完成对数据库的增删改查功能,需要的朋友可以参考下
    2017-12-12
  • Java实现计算图中两个顶点的所有路径

    Java实现计算图中两个顶点的所有路径

    这篇文章主要为大家详细介绍了如何利用Java语言实现计算图中两个顶点的所有路径功能,文中通过示例详细讲解了实现的方法,需要的可以参考一下
    2022-10-10
  • Java11中基于嵌套关系的访问控制优化详解

    Java11中基于嵌套关系的访问控制优化详解

    Java(和其他语言)通过内部类支持嵌套类,要使其正常工作,需要编译器执行一些技巧,下面这篇文章主要给大家介绍了关于Java11中基于嵌套关系的访问控制优化的相关资料,需要的朋友可以参考下
    2022-01-01
  • springboot项目配置logback日志系统的实现

    springboot项目配置logback日志系统的实现

    这篇文章主要介绍了springboot项目配置logback日志系统的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Spring Cloud多个微服务之间调用代码实例

    Spring Cloud多个微服务之间调用代码实例

    这篇文章主要介绍了Spring Cloud多个微服务之间调用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 关于Spring Ioc和DI注解的问题

    关于Spring Ioc和DI注解的问题

    这篇文章主要介绍了Spring Ioc和DI注解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03

最新评论