/** * 文件结构: * root * -2009516[date] * --154434.txt[time] * --221204.txt[time] * -2009521[date] * --92344.txt[time] * */ package FoldIO; import java.io.*; import java.util.*; public class StrongFloder { /** * Var */ //public File configFile=new File("config.ini"); public File rootFold; public File[] childFiles; public int childrenCount; /** * Method * */ //方法描述:要求指定根目录的构造方法 //返回结果:void public StrongFloder(File rootFoldIn){ try { if(rootFoldIn.isDirectory()) { rootFold=rootFoldIn; refresh(); } else{ System.out.println("must be a Directory"); } } catch(Exception SF){de(SF);} } //方法描述:刷新文件属性 public void refresh(){ childFiles=null; childFiles=rootFold.listFiles(); Arrays.sort(childFiles);//将数组按文件名从小到大重新排序 childrenCount=childFiles.length;//得到子文件大小 } //方法描述:异常处理 private void de(Exception e){ e.printStackTrace(); } //得到日期为倒数第n个目录或文件,按从大到小排列 //返回类型:File[] //是否验证:TRUE public File[] getLastFold(int n){ File[] lastFold=new File[n]; try{ if(n<=childrenCount) { //找到时间最近de文件夹 refresh(); int a=childrenCount,i=0; for(i=0;i<n;i++) { lastFold[i]=childFiles[a---1]; } } else { lastFold=childFiles; } } catch(Exception gLF){de(gLF);} finally{return lastFold;} } //方法描述:得到目标文件的指定字段 //返回类型:String //是否验证:TRUE public static String getContext(File iniFile,String keyword){ String reStr="None"; try { if(iniFile.isFile()) { //File msgFile=new File(rootFold.getAbsolutePath(),iniFile.getName()); BufferedReader br=new BufferedReader(new FileReader(iniFile)); String temp; while((temp=br.readLine())!=null) { if(temp.startsWith(keyword)) { reStr=temp; } } } } catch(Exception gC){System.out.println("#gC"+gC);} finally{return reStr;} } // 方法描述:得到目标文件的所有字段 // 返回类型:String // 是否验证:TRUE public String getFullMsg(File iniFile){ String reStr=""; try { if(iniFile.isFile()) { BufferedReader br=new BufferedReader(new FileReader(iniFile)); String s; while((s=br.readLine())!=null) { reStr+=s; } /** * while(br.readLine()!=null) * { * reStr+=br.readLine();这样是错误的写法?Why? * } * * */ } } catch(Exception gC){System.out.println("#gC"+gC);} finally{return reStr;} } //方法描述:得到日期目录文件夹下所有消息[UNDONE] //返回类型:String[] public String[] getAllMsg(){ refresh(); String[] arrayMsg=new String[childrenCount]; try{ for(int j=0;j<childrenCount;j++) { switch(j) { } } //将他们的作者与留言一起存到数组中 } catch(Exception gLFs){de(gLFs);} finally{return arrayMsg; } } //得到最后留言的n条消息 public String[] getLastFiles(int n){ String[] arrayMsg=new String[n]; try{ //List list=null; //将所有留言文件按照时间远近装入list中 StrongFloder sf=new StrongFloder(rootFold); System.out.println(sf.childrenCount); File[] path=sf.childFiles;//装载子文件夹 StrongFloder[] sf2=new StrongFloder[sf.childrenCount];;//子文件夹实列化StrongFloder File[] child=null;//装载2级文件 ArrayList list = new ArrayList();//所有文件列表 int count=0; for(int i=0;i<sf.childrenCount;i++) { sf2[i]=new StrongFloder(path[i]); child=sf2[i].childFiles; for(int j=0;j<(sf2[i].childrenCount);j++) { System.out.println(child[j]); list.add(child[j].getAbsolutePath()); } } //将list中留言文件中的留言按最近到最远时间导出到数组中; if(n<=list.size()) { for(int k=0;k<n;k++) { File f=new File(String.valueOf(list.get(list.size()-k-1))); arrayMsg[k]=getFullMsg(f); } } else { for(int k=0;k<list.size();k++) { File f=new File(String.valueOf(list.get(list.size()-k-1))); arrayMsg[k]=getFullMsg(f); } } } catch(Exception gLFs){de(gLFs);} finally{return arrayMsg; } } //设置根目录 public void setRootFold(String path){ try { rootFold=new File(path); } catch(Exception sRF){de(sRF);} finally{} } //方法描述:得到日期 //返回类型:String //参数说明:0[20090524] // 1[2009-05-24] //是否验证:TRUE public String getDateString(){ String date=""; try { Calendar today=Calendar.getInstance(); today.setTime(new Date()); int year=today.get(Calendar.YEAR); int month=today.get(Calendar.MONTH)+1; int day=today.get(Calendar.DAY_OF_MONTH); // System.out.println(year+""+month+""+day); String yearString=String.valueOf(year); String monthString=String.valueOf(month); String dayString=String.valueOf(day); if(month<10) { monthString="0"+monthString; } if(day<10) { dayString="0"+dayString; } /* switch(style) { case 0:date=yearString+monthString+dayString; case 1:date=yearString+"-"+monthString+"-"+dayString; } */ date=yearString+monthString+dayString; } catch(Exception gDS){gDS.printStackTrace();} finally{return date;} } //方法描述:得到时间 //返回类型:String //参数说明:0[180409] // 1[18:04:09] //是否验证:TRUE public String getTimeString(){ String time=""; try { Calendar today=Calendar.getInstance(); today.setTime(new Date()); int hour=today.get(Calendar.HOUR_OF_DAY); int minute=today.get(Calendar.MINUTE); int second=today.get(Calendar.SECOND); String hourString = String.valueOf(hour); String minuteString = String.valueOf(minute); String secondString = String.valueOf(second); if(minute<10) { minuteString="0"+minuteString; } if(second<10) { secondString="0"+secondString; } /* switch(style) { case 0:time=hourString+minuteString+secondString; case 1:time=hourString+":"+minuteString+":"+secondString; } */ time=hourString+minuteString+secondString; } catch(Exception gTS){gTS.printStackTrace();} finally{return time;} } //方法描述:将新留言写入文件 //是否验证:true public boolean writeMsg(String name,String msg){ boolean success=false; try { File pathFile=new File(rootFold,getDateString()); pathFile.mkdirs();//必须先创建文件夹 File msgFile=new File(pathFile,getTimeString()+".txt"); if(name!=""&&msg!="") { if(!msgFile.exists())//使用文件判断,以防止同事留言覆盖同文件错误 { RandomAccessFile raf=new RandomAccessFile(msgFile,"rw"); msgFile.createNewFile();//然后再建立文件,否则找不到路径异常 System.out.println(msgFile+"创建成功"); raf.write(("name="+name+"/n").getBytes());//采用getBytes()写入文件,避免乱码 raf.write(("msg="+msg+"/n").getBytes()); raf.close(); } else { RandomAccessFile raf=new RandomAccessFile(msgFile,"rw"); raf.seek(raf.length()); raf.write(("name="+name+"/n").getBytes()); raf.write(("msg="+msg+"/n").getBytes()); raf.close(); } success=true; } } catch(Exception wM){System.out.println("#wM");wM.printStackTrace();} finally{return success;} } } package FoldIO; import java.io.*; import java.util.*; public class tryFloder { /** *Var */ public static void main(String[] args) { new tryFloder().test(); } public void test(){ File root=new File("D://java//jaxmao-eclipse-3.2.1-RC1//eclipse//WorkFold//naixin//test"); StrongFloder sf=new StrongFloder(root); File[] fold=sf.getLastFold(2); File date=fold[0]; /* //try write System.out.print(sf.writeMsg("", "")); System.out.print(sf.writeMsg("张任兴", "")); System.out.print(sf.writeMsg("", "11111")); System.out.print(sf.writeMsg("张任兴", "1")); System.out.print(sf.writeMsg("张任兴", "刘岁成")); */ ///* //try read int n=6; String msg[]=sf.getLastFiles(n); for(int i=0;i<n;i++){ System.out.println(msg[i]); } // */ //File a=new File("a.txt"); //System.out.println(((new File(new File(new File(a.getAbsolutePath()).getAbsolutePath()).getAbsolutePath()).getAbsolutePath()))); //for(int i=0;i<sf.childrenCount;i++){ //System.out.println(sf.childFiles[i].getAbsolutePath()); //} } }