1、使用bufferedreader读取文件
bufferedreader是为了提供读的效率而设计的一个包装类,它可以包装字符流。可以从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
static long testbuffered(string filename) throws ioexception{ long starttime = system.currenttimemillis(); bufferedreader reader = new bufferedreader(new filereader(filename)); char[] buffer=new char[8*1024]; long sum = 0; while((count=reader.read(buffer))!=-1) { sum += count; } reader.close(); long endtime = system.currenttimemillis(); system.out.println("total time of bufferedreader is "+ (endtime - starttime) + " milliseconds, total byte is " + sum); return endtime - starttime;}
2、使用randomaccessfile类读取文件
randomaccessfile是java提供的对文件内容的访问,既能够读取文件,也能够写文件;randomaccessfile支持随机访问文件,可以访问文件的任意位置。
static long testrandomaccess(string filename) throws ioexception{ long starttime = system.currenttimemillis(); randomaccessfile reader = new randomaccessfile(filename,"r"); int count; byte[] buffer=new byte[8*1024];//缓冲区 long sum = 0; while((count=reader.read(buffer))!=-1){ sum += count; } reader.close(); long endtime = system.currenttimemillis(); system.out.println("total time of randomaccess is "+ (endtime - starttime) + " milliseconds, total byte is " + sum); return endtime - starttime;}
3、使用fileinputstream方法读取文件
这种方式也很常见,原理也和名字一样,把文件变成输入流,然后一个字符一个字符的读取。它是调用了inputstream的read函数实现的,代码如下:
public int read(byte b[], int off, int len) throws ioexception { int c = read(); if (c == -1) { return -1; } b[off] = (byte)c; int i = 1; try { for (; i < len ; i++) { c = read(); if (c == -1) { break; } b[off + i] = (byte)c; } } catch (ioexception ee) { } return i;}
流是一个抽象的概念。当java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件、内存或者网络等。流的创建是为了更方便地处理数据的输入输出。
更多java知识请关注java基础教程。
以上就是java中文件怎么读取的详细内容。
