好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java中流的有关知识点详解

什么是流?

流:程序和设备之间连接起来的一根用于数据传输的管道,流就是一根管道。

流的分类:

四大基本抽象流(输入流,输出流,字符流,字节流) 文件流 缓冲流 转换流 数据流     流一定是类,但类不一定是流 print流 object流

按数据流的方向不同可以分为输入流和输出流。

按处理数据单位不同可以分为字节流和字符流。(一个字符是两个字节)

按功能不同可以分为节点(原始)流和处理(包裹)流。

               字节流         字符流
输入流      inputstream      reader
输出流      outputstream     writer

文件流:

读取一个文件内容并将其输出到显示器上,并统计读取出来的字节的个数。字符串来表示操作系统的文件路径时,我们可以使用\\和/两种方式来作为文件夹的路径分隔符。

什么是字节流?

fileinputstream       fileoutputstream

什么是字符流?

filereader       filewriter  

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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可以提高读写文本文件内容的速度

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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文件中。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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();

}

}

}

}

总结

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

原文链接:https://blog.csdn.net/mumu1998/article/details/81670581

查看更多关于Java中流的有关知识点详解的详细内容...

  阅读:11次