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

解决方案 »

  1.   

    Scanner先读取跳过N行,然后再读取
    while (scanner.hasNextLine())  {
        String line = scanner.nextLine();
        ++count;
       
        if (count <= N) { continue; }
        // Handle the string of line
    }
      

  2.   

    Java.io.RandomAccessFile,一段一段读出来,然后计算里面的换行符,直到你需要的位置
      

  3.   

    不对。。Java.io.RandomAccessFile可以去定位到从哪个字节来读文件的。现在是想有没有捷径直接通过行来定位继续等。。
      

  4.   


    /**
    代码是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();
        }