问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中有几种类型的流

发布网友 发布时间:2022-04-23 09:56

我来回答

2个回答

热心网友 时间:2022-04-08 00:31

在Java.io包中还有许多其他的流,主要是为了提高性能和使用方便。C/C++只能提供字节流。Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来的.

字符流和字节流是根据处理数据的不同来区分的。字节流按照8位传输,字节流是最基本的,所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。

1.字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;

2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

读文本的时候用字符流,例如txt文件。读非文本文件的时候用字节流,例如mp3。理论上任何文件都能够用字节流读取,但当读取的是文本数据时,为了能还原成文本你必须再经过一个转换的工序,相对来说字符流就省了这个麻烦,可以有方法直接读取。

字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!

1.字节流:继承于InputStream \ OutputStream。

OutputStream提供的方法:

void write(int b):写入一个字节的数据

void write(byte[] buffer):将数组buffer的数据写入流

void write(byte[] buffer,int offset,int len):从buffer[offset]开始,写入len个字节的数据

void flush():强制将buffer内的数据写入流

void close():关闭流

InputStream提供的方法:

int read():读出一个字节的数据,如果已达文件的末端,返回值为-1

int read(byte[] buffer):读出buffer大小的数据,返回值为实际所读出的字节数

int read(byte[] buffer,int offset,int len)

int available():返回流内可供读取的字节数目

long skip(long n):跳过n个字节的数据,返回值为实际所跳过的数据数

void close():关闭流

2.字符流,继承于InputStreamReader \ OutputStreamWriter。

字符流的类:1),BufferedReader是一种过滤器(filter)(extends FilterReader)。过滤

器用来将流的数据加以处理再输出。构造函数为:

BufferedReader(Reader in):生成一个缓冲的字符输入流,in为一个读取器

BufferedReader(Reader in,int size):生成一个缓冲的字符输入流,并指定缓冲区的大小为size

public class IOStreamDemo {
public void samples() throws IOException { //1. 这是从键盘读入一行数据,返回的是一个字符串
BufferedReader stdin =new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter a line:");
System.out.println(stdin.readLine());

//2. 这是从文件中逐行读入数据

BufferedReader in = new BufferedReader(new FileReader("IOStreamDemo.java"));
String s, s2 = new String();
while((s = in.readLine())!= null)
s2 += s + "\n";
in.close();

//3. 这是从一个字符串中逐个读入字节
StringReader in1 = new StringReader(s2);
int c;
while((c = in1.read()) != -1)
System.out.print((char)c);

//4. 这是将一个字符串写入文件
try {
BufferedReader in2 = new BufferedReader(new StringReader(s2));
PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter("IODemo.out")));
int lineCount = 1;
while((s = in2.readLine()) != null )
out1.println(lineCount++ + ": " + s);
out1.close();
} catch(EOFException e) {
System.err.println("End of stream");
}
} }

对于上面的例子,需要说明的有以下几点:

1. InputStreamReader是InputStream和Reader之间的桥梁,由于System.in是字节流,需要用它来包装之后变为字符流供给BufferedReader使用。

3. PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter("IODemo.out")));

这句话体现了Java输入输出系统的一个特点,为了达到某个目的,需要包装好几层。首先,输出目的地是文件IODemo.out,所以最内层包装的是FileWriter,建立一个输出文件流,接下来,我们希望这个流是缓冲的,所以用BufferedWriter来包装它以达到目的,最后,我们需要格式化输出结果,于是将PrintWriter包在最外层。

Java流有着另一个重要的用途,那就是利用对象流对对象进行序列化。

在一个程序运行的时候,其中的变量数据是保存在内存中的,一旦程序结束这些数据将不会被保存,一种解决的办法是将数据写入文件,而Java中提供了一种机制,它可以将程序中的对象写入文件,之后再从文件中把对象读出来重新建立。这就是所谓的对象序列化。Java中引入它主要是为了RMI(Remote
Method Invocation)和Java Bean所用,不过在平时应用中,它也是很有用的一种技术。

热心网友 时间:2022-04-08 01:49

字节流类
抽象父类: InputStream,OutputStream
实现类包括如下几种:
BufferedInputStream 缓冲流-过虑流
BufferedOutputStream
ByteArrayInputStream 字节数组流-节点流
ByteArrayOutputStream
DataInputStream 处理JAVA标准数据流-过虑流
DataOutputStream
FileInputStream 处理文件IO流-节点流
FileOutputStream
FilterInputStream 实现过虑流-字节过虑流父类
FilterOutputStream
PipedInputStream 管道流
PipedOutputStream
PrintStream 包含print() 和 println()
RandomAccessFile 支持随机文件
字符流
抽象父类:Reader, Writer
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
螳螂吃素吗?因为现在不容易找到虫子喂它吃。只给它一下南瓜皮也行吗... 我是男生,18岁,两夹有红血丝, 鼻子有黑头,脸部还有疙瘩,我要用什么洁... 18岁.油性皮肤. 男士。 有什么洗面奶能有效去油顺便去黑头暗疮之类的... 我今年18岁是油性皮肤,尤其是鼻子和鼻子旁边的脸狭很容易出油。最近用... 祛痘后留下黑色痘印应该怎么消除? 2xl是多大尺码180还是175 2xl是175吗 年轻人最核心的能力是什么? 年轻的时候蕞核心的能力是什么? 人在年轻的时候蕞核心的能力是什么 Java中有几种类型的流? 计算机编程里面的流是什么? IPhone上用什么软件看美剧好 流水的流组什么词 iPhone用什么软件可以在线看电影 问一下梦见房顶上漏水是怎么回事?有哪些注意事项 流泪的流的解释是什么 流动的流可以组什么词? 物流中的流到底如何解释 虎牙礼物怎么加热度 流行的流怎么写 虎牙直播有那种在直播画面上显示粉丝送礼的插件吗? 哪个能说一下梦见自己家房顶漏水的寓意是什么? 计算机中的流是指 为什么虎牙和b站最近都不能发弹幕了,是不是政策的原因? 流泪的流怎么解释 java中的流是什么? 为什么我在虎牙直播间发弹幕主播看不见…… 什么的流着(用恰当的词语)? 为什么我的手机虎牙直播不显示弹幕了,只能看见刷礼物的。 iphone有什么软件可以在线看漫画的?浏览器除外... 我想下载iphone在线的软件 Java中的流是怎样的一种存在? iPhone有什么像uc一样可以缓存在线看的视频的浏览器或软件? 什么的流填动词? 求iphone能在国外用的在线听歌软件 如何形象的理解计算机中“流”的概念 下载什么软件可以显示iphone在线 JAVA中的流问题 流的简介 qq iphone在线软件是什么原理,会不会有盗号? 无锡广播FM 104 家里有个中医真好? 无锡所有FM调频地址和名称! iphone海外听歌软件 可在线下载 不受国内限制 原来的无锡广播电台的周未生活节目播出时间和调频是多少千赫 iphoneQQ在线软件网站 在江苏苏州都能收听到什么广播电台啊?FM,AM的列表 在无锡能收到的电台中哪个能收到与法律有关的节目的? 今天晚上听到无锡104电台音乐随身听里的一个首歌,貌似是莫文蔚唱的,里面歌词有拜拜了拜拜了 我在无锡,想问问*人民广播电台经济之声在无锡的频率是多少