首页编程java编程java字节流是什么意思?java中的“流”是什么

java字节流是什么意思?java中的“流”是什么

编程之家2023-10-11113次浏览

大家好,今天来为大家分享java字节流是什么意思的一些知识点,和java中的“流”是什么的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

java字节流是什么意思?java中的“流”是什么

java中的流是什么

流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。

流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流。

可以将流想象成一个“水流管道”,水流就在这管道中形成了,自然就出现了方向的概念。

java字节流是什么意思?java中的“流”是什么

当程序需要从某个数据源读入数据的时候,就会开启一个输入流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的地的时候,也会开启一个输出流,这个数据源目的地也可以是文件、内存或网络等等。

可以从不同的角度对流进行分类:

1.处理的数据单位不同,可分为:字符流,字节流

java字节流是什么意思?java中的“流”是什么

2.数据流方向不同,可分为:输入流,输出流

3.功能不同,可分为:节点流,处理流

1.和 2.都比较好理解,对于根据功能分类的,可以这么理解:

节点流:节点流从一个特定的数据源读写数据。即节点流是直接操作文件,网络等的流,例如FileInputStream和FileOutputStream,他们直接从文件中读取或往文件中写入字节流。

处理流:“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能。过滤流是

使用一个已经存在的输入流或输出流连接创建的,过滤流就是对节点流进行一系列的包装。例如BufferedInputStream和

BufferedOutputStream,使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率,以及DataInputStream和

DataOutputStream,使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。他们都属于过滤流。

来源:

http://www.cnblogs.com/shitouer/archive/2012/12/19/2823641.html

1. Java I/O中字符流和字节流的区别

字节流与和字符流的使用非常相似,但实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。

下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。

1、使用字节流不关闭执行

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.OutputStream;

publicclassOutputStreamDemo05{

publicstaticvoidmain(String[]args)throwsException{//异常抛出,不处理

//第1步:使用File类找到一个文件

Filef=newFile("d:"+File.separator+"test.txt");//声明File对象

//第2步:通过子类实例化父类对象

OutputStreamout=null;

//准备好一个输出的对象

out=newFileOutputStream(f);

//通过对象多态性进行实例化

//第3步:进行写操作

Stringstr="HelloWorld!!!";

//准备一个字符串

byteb[]=str.getBytes();

//字符串转byte数组

out.write(b);

//将内容输出

//第4步:关闭输出流

//out.close();

//此时没有关闭

}

}

打开文件会发现,此时没有关闭字节流操作,但是文件中也依然存在了输出的内容,证明字节流是直接操作文件本身的。而下面继续使用字符流完成,再观察效果。

2、使用字符流不关闭执行

packageorg.lxh.demo12.chariodemo;

importjava.io.File;

importjava.io.FileWriter;

importjava.io.Writer;

publicclassWriterDemo03{

publicstaticvoidmain(String[]args)throwsException{//异常抛出,不处理

//第1步:使用File类找到一个文件

Filef=newFile("d:"+File.separator+"test.txt");//声明File对象

//第2步:通过子类实例化父类对象

Writerout=null;

//准备好一个输出的对象

out=newFileWriter(f);

//通过对象多态性进行实例化

//第3步:进行写操作

Stringstr="HelloWorld!!!";

//准备一个字符串

out.write(str);

//将内容输出

//第4步:关闭输出流

//out.close();

//此时没有关闭

}

}

程序运行后会发现文件中没有任何内容,这是因为字符流操作时使用了缓冲区,而在关闭字符流时会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,则缓冲区中的内容是无法输出的,所以得出结论:字符流使用了缓冲区,而字节流没有使用缓冲区。

如果想在不关闭时也可以将字符流的内容全部输出,则可以使用Writer类中的flush()方法完成。

importjava.io.File;

importjava.io.FileWriter;

importjava.io.Writer;

publicclassWriterDemo04{

publicstaticvoidmain(String[]args)throwsException{//异常抛出不处理

//第1步:使用File类找到一个文件

Filef=newFile("d:"+File.separator+"test.txt");//声明File

对象

//第2步:通过子类实例化父类对象

Writerout=null;

//准备好一个输出的对象

out=newFileWriter(f);

//通过对象多态性进行实例化

//第3步:进行写操作

Stringstr="HelloWorld!!!";

//准备一个字符串

out.write(str);

//将内容输出

out.flush();

//强制性清空缓冲区中的内容

//第4步:关闭输出流

//out.close();

//此时没有关闭

}

}

此时,文件中已经存在了内容,更进一步证明内容是保存在缓冲区的。这一点在读者日后的开发中要特别引起注意。

java中的“流”是什么

流是个抽象的概念,是对输入输出设备的抽象,java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。

流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流。

可以将流想象成一个“水流管道”,水流就在这管道中形成了,自然就出现了方向的概念。

当程序需要从某个数据源读入数据的时候,就会开启一个输入流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的地的时候,也会开启一个输出流,这个数据源目的地也可以是文件、内存或网络等等。

可以从不同的角度对流进行分类:

1.

处理的数据单位不同,可分为:字符流,字节流

2.数据流方向不同,可分为:输入流,输出流

3.功能不同,可分为:节点流,处理流

1.

2.

都比较好理解,对于根据功能分类的,可以这么理解:

节点流:节点流从一个特定的数据源读写数据。即节点流是直接操作文件,网络等的流,例如fileinputstream和fileoutputstream,他们直接从文件中读取或往文件中写入字节流。

处理流:“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能。过滤流是

使用一个已经存在的输入流或输出流连接创建的,过滤流就是对节点流进行一系列的包装。例如bufferedinputstream和

bufferedoutputstream,使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率,以及datainputstream和

dataoutputstream,使用已经存在的节点流来构造,提供了读写java中的基本数据类型的功能。他们都属于过滤流。

来源:

http://www.cnblogs.com/shitouer/archive/2012/12/19/2823641.html

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

java常见的内存错误的是什么意思 常见的java异常有哪些都是什么意思java 字符 是什么 java中String是什么