void checkPoint() throws FileNotFoundException{
			/*
			 * save the index
			 */
			PrintWriter indexSave = new PrintWriter(new File("testData/indexCheckpoint/index"));
			Iterator<Entry<String, long[]>> iter = index.entrySet().iterator();
			while(iter.hasNext()){
				Entry<String, long[]> entry= iter.next();
				indexSave.print(entry.getKey());  //record the key value
				long indexMeta[] = new long[M+2];
				indexMeta = entry.getValue();
				for(int i=0; i<M+2;i++){			//record all the other values in one entry
					indexSave.print(',');
					indexSave.print(indexMeta[i]);
				}
				indexSave.println();
			}
			
			/*
			 * save the estimateBase
			 */
			PrintWriter estimateSave = new PrintWriter(new File("testData/indexCheckpoint/estimateBase"));
			iter = index.entrySet().iterator();
			while(iter.hasNext()){
				Entry<String, long[]> entry= iter.next();
				estimateSave.print(entry.getKey());  //record the key value
				long estimateMeta[] = new long[2];
				estimateMeta = entry.getValue();						
				estimateSave.print(',');//record all the other values in one entry
				estimateSave.print(estimateMeta[0]);
				estimateSave.print(',');
				estimateSave.print(estimateMeta[1]);
				estimateSave.println();
			}
		}