首页

关于java读取文件时,如何判断读取文件是否到达末尾?

标签:java,java操作file,读取文件,问题解答,输入输出流,InputStream,Reader,BufferedReader     发布时间:2015-06-07   

一、前言

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();

<<热门下载>>