赞成 JavaVsNet(JavaVsNet)的意见

解决方案 »

  1.   

    文件能重后面读么?
    只能全部读出来或者重头读吧
    我建议一次把他全部读取到一个String里,不用readline()的方法,用FileReader读取,速度快
    public String readFile(String file) throws IOException{
    FileReader fr = new FileReader(file);
    char[] buffer = new char[1024*8];
    int b = 0;
    StringBuffer sb = new StringBufer();
    while(true){
       b = fr.read(buffer);
       if(b<0) break;
       sb.append(sb,0,b);
    }
    return sb.toString();
    public void close(FileReader fr){
      try{fr.close();}catch(Exception e){}finally{fr = null;}
    }
    然后再返回的String中查找
    如果你确定要查找的字符串在文本末尾段的话,可以用下面的方法
    //offset,就是你设定的偏移量,如果你的标记载1m以后的字符串中,那么设定offset为1024*1024
    public String readFile(String file,int offset) throws IOException{
    FileReader fr = new FileReader(file);
    char[] buffer = new char[1024*8];
    char[] off = new char[offset];
    int b = 0;
    b = fr.read(off);
    if(b<0) return null;
    off = null;
    StringBuffer sb = new StringBufer();
    while(true){
       b = fr.read(buffer);
       if(b<0) break;
       sb.append(sb,0,b);
    }
    return sb.toString();
      

  2.   

    hykwolf(Yankang Hu) 的方法不错
    还有没有更厉害的?
      

  3.   

    利用java.nio.FileChannel中的方法map
      

  4.   

    再说一下,第二个方法的read(off);的办法不好
    public String readFile(String file,int offset) throws IOException{
    FileReader fr = new FileReader(file);
    char[] buffer = new char[1024*8];
    int b = 0;
    fr.skip(offset);//赫赫,应该用这个方法才对,跳过
    StringBuffer sb = new StringBufer();
    while(true){
       b = fr.read(buffer);
       if(b<0) break;
       sb.append(sb,0,b);
    }
    return sb.toString();
      

  5.   

    我无法编译通过你的方法,StringBuffer的append有问题?
    我是jdk1.40import java.io.*;class MFLFile
    {
    public static void main(String[] args) 
    {
    System.out.println("Hello World!");
    }
    public String readFile(String file) throws IOException{
    FileReader fr = new FileReader(file);
    char[] buffer = new char[1024*8];
    int b = 0;
    StringBuffer sb = new StringBuffer();
    while(true){
    b = fr.read(buffer);
    if(b<0) break;
        sb.append(sb,0,b);
    }
    return sb.toString();
    } public void close(FileReader fr){
      try{
      fr.close();
     }catch(Exception e){}
     finally{
     fr = null;
      }
    }
    }
    错误信息 
    MFLFile.java:19: cannot resolve symbol
    symbol  : method append  (java.lang.StringBuffer,int,int)
    location: class java.lang.StringBuffer
                        sb.append(sb,0,b);
                          ^
      

  6.   

    sigh..写错了
    sb.append(buffer,0,b);