首页 > 编程知识 正文

java文件输入输出流,字节流读取文件

时间:2023-05-05 03:42:18 阅读:148208 作者:102

关于文件输入流:

文件输入流(称为文件字节输入流)是一种万能流,通过一次读取一个字节的字节,可以读取任何文件。

也称为读取,将文件数据从硬盘输入存储器。

测试代码:

import java.io.*;

公共类测试02 {

publicstaticvoidmain (string [ ] args ) {

//创建文件字节输入流对象

文件输入流文件=空;

//流操作抛出异常。 是编译时异常,需要预处理。 通常捕获main方法的异常,不抛出异常

try {

//f :Java codeJava seio testtest 02.txt,属于绝对路径的文件地址

//文本内容: abc

fis=new file inputstream (f : (Java code (Java se (io test (test 02.txt ) ); //注意写上两个\,两个\表示一个

//fis=new file inputstream (f :/Java code/Java se/io test/test 02.txt ); //这样的//、这样的/可以写为没有转义的意义

Read (开始阅读)

/*

int readData=fis.read (; //返回第一个字节的ASCII编码值

system.out.println(readdata ); //97正在读' a '的字节

//读取下一个字节

读数据=fis.read (;

system.out.println(readdata ); //98读b

//读取下一个字节

读数据=fis.read (;

system.out.println(readdata ); 读//99

//读取下一个字节

读数据=fis.read (; //没有数据时,read ) )方法返回-1

system.out.println(readdata ); //-1

*/

//以上的读取操作也可以用循环控制

int readData=0;

wile ((读数据=fis.read ) )!=-1({

system.out.print (读数据' ); //97 98 99

}

System.out.println (;

}catch(filenotfoundexceptione ) {

e .打印任务跟踪(;

}catch(ioexceptione ) {

e .打印任务跟踪(;

} finally { //finally语句块中的代码必须执行,并确保流已使用

if(fis!=null (仅当//fis不为空时,才需要关闭通道

try {

fis.close (; //close ) )方法抛出编译时异常,然后继续try.catch

}catch(ioexceptione ) {

e .打印任务跟踪(;

}

}

}

}

}

熟悉文件输入流的read ()方法:

外汇存取款流程https://www.fx61.com/support

如果每次只能使用read ()读取一个字节,则硬盘和内存之间的交互将过于频繁,从而浪费时间。

请考虑使用read(byte[] b方法一次读取最大b.length字节。 方法的返回值是实际读取的字节数。

注意:以到b.length为止的字节数读取到文件末尾时,可能会小于b.length。

文件读取结束后,再次读取将返回-1。

测试代码:

import java.io.*;

公共类测试03 {

publicstaticvoidmain (string [ ] args ) {

文件输入流文件=空;

try {

//使用相对路径时,IOtesttest03.txt将显示当前文件下的

//注意: IDEA的当前路径是名为project项目的根文件

fis=new file inputstream (io test (test 03.txt );

//首先注意文本的内容为“abcdef”

byte[]创建数组

byte[] bytes=new byte[4]; //指定一次最多读取4个字节

//第一次读取

/*

intreadcount=fis.read(bytes;

system.out.println(readcount ); //4

stringstrdata=newstring(Bytes,0,readCount ); //将读取的bytes数组转换为字符串

system.out.println(strdata; //abcd

//第二次读取

读计数=fis.read (bytes;

system.out.println(readcount ); //2

strdata=newstring(bytes,0,readCount );

system.out.println(strdata; //ef

//第三次读取

读计数=fis.read (bytes;

system.out.println(readcount ); //-1表示读完了

*/

//以上的读取应该通过循环控制

int readCount=0;

wile (读计数=fis.read ) bytes )!=-1({

system.out.print (new string (bytes,0,readCount ) ); //abcdef

}

System.out.println (;

}catch(filenotfoundexceptione ) {

e .打印任务跟踪(;

}catch(ioexceptione ) {

e .打印任务跟踪(;

} finally {

if(fis!=null ) {

try {

fis.close (;

}catch(ioexceptione ) {

e .打印任务跟踪(;

}

}

}

}

}

有关文件inputstream类的一般方法:

)1)公共文件输入流(string name );

方法,创建文件输入流对象并将其连接到指定的文件名。

(1)输入读;

一次读取一个字节,返回更改了字节的ASCII代码值。 读完文件后返回-1。

)2)内部(byte [ ] b );

一次读取最大b.length字节,并返回实际读取的字节数。 文件读完后返回-1。

)3)语音类别;

关闭当前流中的所有管道并释放资源。

所有的流程都没有了,一定要记得关闭,释放资源。

通常,close ) )方法位于finally语句块中,以便在使用流后将其关闭。

(4)可用);

返回流中剩余的未读取字节数。 读了文件后返回0。

如果文件不大,可以一次读完文件。

byte [ ] bytes=new byte [ fis.available (); //直接创建根据大小的byte[]数组

intreadecount=fis.read(bytes;

system.out.println (new string (bytes,0,readCount ) ); //如果是文本文件的话,可以自己打印观看

) longskip(longn );

跳过n个字节不读取。

某些文件可能具有固定格式,可以跳过这些不必要的字节数,从而提高读取效率。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。