首页编程inputstreamreader InputStream和Reader的区别

inputstreamreader InputStream和Reader的区别

编程之家 2023-11-02 201次浏览

今天给各位分享inputstreamreader的知识,其中也会对InputStream和Reader的区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

inputstreamreader InputStream和Reader的区别

java 输入流类FileInputStream下的read()是什么意思

该类意思是:从InputStream中派生出来的简单输入类。

一、构造方法

FileInputStream(String name);//使用给定的文件名创建对象

FileInputStream(File file);//使用File对象创建FileInputStream对象

二、读取文件

1.使用文件输入流读取文件

inputstreamreader InputStream和Reader的区别

FileInuputStream istream=new FileInputStream("myfile.dat");

或:

File f=new File("myfile.dat");

FileInputStream istream=new FileInputStream(f);

构造方法可能会产生异常IOException,故为了把一个文件输入流对象与一个文件关联起来,需:

try{ FileInputStream ins=new FileInputStream("myfile.dat");}

inputstreamreader InputStream和Reader的区别

catch(IOException e){ System.out.println("File read error:"+e);}

2.从输入流中读取字节

int read();//从输入流中读取单个字节数据(0~255),如到输入流末尾则返回-1

int read(byte b[]);//读多个字节

int read(byte b[],int off,int len);

3.关闭流

Java在程序结束时自动关闭所有打开的流,但显式关闭任何打开的流是一个好习惯。

close();

InputStream和Reader的区别

java.io下面有两个抽象类:InputStream和Reader

InputStream是表示字节输入流的所有类的超类

Reader是用于读取字符流的抽象类

InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。

即用Reader读取出来的是char数组或者String,使用InputStream读取出来的是byte数组。

弄清了两个超类的根本区别,再来看他们底下子类的使用,这里只对最常用的几个说明

InputStreamReader.read()详解

在最一开始,我们先明确InputStreamReader和InputStream的区别:InputStreamReader用于读取字符,而InputStream用于读取字节

public abstract int read() throws IOException

从输入流中读取数据的一个字符(可以从中读入一个字节序列的对象称为输入流,这些字节序列可以来自文件、网络、内存块)。

以整数的形式返回读入的这个字符(其实就是ASC码),也就是一个0-255的整数。

如果已经到达流末尾而没有可用的字节,则返回值-1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。

public int read(byte[] cbuf, int offset, int length) throws IOException

将输入流中最多 length个字符读入 byte数组(缓冲区)。尝试读取 length个字符,但读取的字节也可能小于该值。

以整数形式返回实际读取的字符数。

如果已经到达流末尾而没有可用的字符,则返回值-1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。

如果 len为 0,则不读取任何字节并返回 0;否则,尝试读取至少一个字符。如果因为流位于文件末尾而没有可用的字字符,则返回值-1;否则,至少读取一个字节并将其存储在 b中。

将读取的第一个字节存储在元素 b[offset]中,下一个存储在 b[off+1]中,依次类推。读取的字符数最多等于 length。设 k为实际读取的字节数,这些字节将存储在 b[offset]到 b[off+k-1]的元素中,不影响 b[off+k]到 b[off+len-1]的元素。

在任何情况下,b[0]到b[off]的元素以及b[off+len]到b[b.length-1]的元素都不会受到影响。

此方法重复调用方法 read()。如果第一次这样的调用导致 IOException,则从对 read(cbuf, offset, length)方法的调用中返回该异常。如果对 read()的任何后续调用导致IOException,则捕获该异常并将其视为到达文件末尾;到达该点时读取的字符存储在 cbuf中,并返回发生异常之前读取的字节数。在已读取输入数据len的请求数量、检测到文件结束标记、抛出异常前,此方法的默认实现将一直阻塞。建议子类提供此方法更为有效的实现。

请问JAVA中的BufferedReader是什么意思

BufferedReader是缓存流的一个类。

缓存流是计算机领域中输入输出流的一种常见形式。包括BufferedInputStream/ BufferedOutputStream类和BufferedReader/ BufferedWriter类。

BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。缓存流是过滤流,在创建具体流时需要给出一个InputStream/ OutputStream类型的流座位前端流,并可以指明缓冲区的大小。

扩展资料:

输入输出原理:

BufferedReader和BufferedWriter类各拥有8192个字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并放满缓冲区,而之后若使用read()()方法,会先从缓冲区中进行读取。

如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

BufferedReader字符流以字符为单位传输数据的流,输入流程序可以从中读取数据的流。

参考资料来源:百度百科-缓存流

参考资料来源:百度百科-java.io

文章到此结束,希望我们对于inputstreamreader和InputStream和Reader的区别的问题能够给您带来一些启发和解决方案。如果您需要更多信息或者有其他问题,请随时联系我们。

includefile?include包含文件找不到 网络营销网,什么叫网络营销