首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

请问:Java从指定行读取文件,但整个文件不加入到内存。

2012-02-29 
请教:Java从指定行读取文件,但整个文件不加入到内存。。。。在线等。。。Java.io.RandomAccessFile提供了我们从某

请教:Java从指定行读取文件,但整个文件不加入到内存。。。。在线等。。。
Java.io.RandomAccessFile提供了我们从某个指针来读取文件。但实际使用时有些问题,seek()方法不是指定某行的位置,而是整个字节流的中指针的位置。所以对我实际的应用意义不大。本人希望能直接定位到某一行数据,然后从这行开始逐行读取数据。。请赐教!!!!!!!

[解决办法]
Scanner先读取跳过N行,然后再读取
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
++count;
 
if (count <= N) { continue; }


// Handle the string of line
}
[解决办法]
Java.io.RandomAccessFile,一段一段读出来,然后计算里面的换行符,直到你需要的位置
[解决办法]

探讨

Scanner先读取跳过N行,然后再读取
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
++count;

if (count <= N) { continue; }


// Handle the string of line
}

[解决办法]
LineNumberInputStream......
[解决办法]
Java code
/**代码是RandomAccessFile自带的readline方法. 你可以自己改写此方法,传入一个需要的行数参数,初始化一个行数=0,在eol = true;的地方改成行数自增然后将while的条件改成当传入参数==行数的时候退出循环,就可以了.*/public final String readLine() throws IOException {    StringBuffer input = new StringBuffer();    int c = -1;    boolean eol = false;    while (!eol) {        switch (c = read()) {        case -1:        case '\n':        eol = true;        break;        case '\r':        eol = true;        long cur = getFilePointer();        if ((read()) != '\n') {            seek(cur);        }        break;        default:        input.append((char)c);        break;        }    }    if ((c == -1) && (input.length() == 0)) {        return null;    }    return input.toString();    } 

热点排行