java实现每一个小时创建一个文件夹

    在开发的过程中如果一个项目的访问量很大的时候我们可能需要对项目的日志做一个分析,从而会产生一个需求那就可能是需要把日志按小时来分类存储(也就是日志每一个小时产生一个文件夹并每一小时产生一个文件这样的话有利于日后的日志分析工作),但是这样的实现并不困难方法很多,可是直接使用java.util.TimeTask来实现,只要设置period的时间段为自己想设置的时间段就可以,但同时也可以直接用quartz定时程序来实现。我这边只是写了一个测试程序来实现该功能,使用的Thread来实现.(以下代码仅供参考)
public class Test implements Runnable {

   private static String parentDirectory = "E:\\web";   // 根目录
   private static long et;                              // 时间间隔时间
   private static String filePath;			// 文件路径
   private static int count = 0;			// 记数器

public static void main(String[] args){
        new Thread(new Test()).start();
 }

     private static void init(){
		// init directory and fileName
		parentDirectory = "E:\\web";
		filePath = null;
		
		Calendar cInstance = new GregorianCalendar();
                // 时间间隔在此设置,我设置为每一分钟创建一个文件夹
		cInstance.add(Calendar.MINUTE, (+1)); 
		et = cInstance.getTimeInMillis() >>> 10;
		++ count;
		createDirectory(String.valueOf(count));
		createNewFile(String.valueOf(count));
	}

     public void run(){
		for(;;){
			if(count == 0)
				init();
			
			// write to disk
			fileWriteToDisk();
			
			// if start > end ,init time
			if(timeInseconds() > et){
				init();
			}
		}
	}

      private static void createDirectory(String dirName){
		parentDirectory = parentDirectory + File.separator + dirName;
		System.out.println("directory----->" + parentDirectory);
		File directory = new File(parentDirectory);
		if(!directory.exists())
			directory.mkdirs();
	}
     

     private static long timeInseconds(){
		return System.currentTimeMillis() >>> 10;
	}
	
	private static void createNewFile(String fileName){
		filePath = parentDirectory + File.separator + fileName + ".properties";
		System.out.println("newFileName----------->" + filePath);
		File file = new File(filePath);
		if(!file.exists()){
			try{
				file.createNewFile();
			}catch(IOException ex){
				;
			}
		}
	}
	
	private static void fileWriteToDisk(){
		File path = new File(filePath);
		if(path.exists()){
			try{
				BufferedWriter bout = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path,true)));
				bout.write(String.valueOf(count));
				bout.newLine();
				bout.flush();
			}catch(FileNotFoundException fn){
				System.out.println("fileNotFound-->" + fn.getMessage());
			}catch(IOException ex){
				;
			}
		}
	}
}

你可能感兴趣的:(java,thread,Web,工作,quartz)