Java读取大文件处理

  1. 使用FileChannel
int bufSize = 1024;
    byte[] bs = new byte[bufSize];
    ByteBuffer byteBuf = ByteBuffer.allocate(1024);
    FileChannel channel = new RandomAccessFile("d:\\filename","r").getChannel();
    while(channel.read(byteBuf) != -1) {
      int size = byteBuf.position();
      byteBuf.rewind();
      byteBuf.get(bs);
      // 把文件当字符串处理,直接打印做为一个例子。
      System.out.print(new String(bs, 0, size));
      byteBuf.clear();
    }

 2. 使用RandomAccessFile

String path = "你要读的文件的路径";
		RandomAccessFile br=new RandomAccessFile(path,"rw");//这里rw看你了。要是之都就只写r
		String str = null, app = null;
		int i=0;
		while ((str = br.readLine()) != null) {
			i++;
			app=app+str;
			if(i>=100){//假设读取100行
				i=0;
//				这里你先对这100行操作,然后继续读
app=null;
			}
		}
		br.close();

 

3. 使用BufferedReader

File file = new File(filepath);   
BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));    
BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024);// 用5M的缓冲读取文本文件  
  
String line = "";
while((line = reader.readLine()) != null){
//TODO: write your business
}

 

你可能感兴趣的:(java)