一、前言
java读取文件时,如果到达文件末尾,再进行读取时会发生异常,所以我们需要判断读取文件已经到达末尾。对于文件读取我们通常会采用不同的读取方式,如用InputStream流读取字节流、用Reader字符输入流的方式进行读取或者通过BufferedReader的行读取方式readLine方式,对于不同的方式读取到文件末尾时,都会返回特殊标识值-1或者null,下面具体上面几次方式符合判断文件是否结束。
二、示例代码
InputStream方式
一种是通过read()方法返回读取字符信息,如到达末尾,则放回-1,如下代码:
int tmp=-1;@b@ FileInputStream fis=new FileInputStream("c:/test1.txt");@b@ BufferdInputStream bis=new BufferedInputStream(fis);@b@ @b@ while((tmp==bis.read()!=-1){ @b@ System.out.println((char)tmp);@b@ } @b@ bis.close(); @b@ fis.close();
二种通过read(byte[] b)返回读取内容到字节数组中总字节数,如到末尾,总字节数返回为-1,示例代码如下:
FileInputStream fis=new FileInputStream("c:/test2.txt");@b@byte[] b=new byte[1024];StringBuffer sb=new StringBuffer();@b@int len;@b@while((len=input.read(b))!=-1){ @b@ sb.append(b);@b@}@b@System.out.print(sb.toString());//打印所有读出的内容
Reader方式
一种也是用read()方法,通过返回-1判断文件读取完成,示例代码如下:
FileReader fr = new FileReader("f:/test3.txt");@b@ try {@b@ int i;@b@ while ((i = fr.read()) != -1) {@b@ System.out.print((char) i);@b@ }@b@ } finally {@b@ fr.close();@b@ }@b@}
另一个钟是封装BufferedReader方式,直接以一行行读取,如到达末尾放回null,示例如下:
FileReader fr = new FileReader("f:/test4.txt");@b@ BufferdReader br=new BufferedReader(fr);@b@ String tmp=null;@b@ while((tmp=br.readLine())!=null){@b@ System.out.println(tmp);@b@ }@b@ br.close();@b@ fr.close();