如何更有效地组织、处理CSDN技术资料及文档(原创,附完整java源程序)

类别:Java 点击:0 评论:0 推荐:

如何更有效地组织、处理CSDN技术资料及文档(原创,附完整java源程序)

 我们知道,CSDN上面有很多精彩的文章。我们在平常浏览(或通过查询)的时候,可以随时将文章保存到本地硬盘。但是,当我们查询出很多文章时候,如果每一页都打开,再另存到硬盘上,很浪费时间。
 有的读者就采用netant等工具进行批量下载,但是文章下载回来之后,我们发现文章的标题并不是我希望的标题。如果我们采用网页的标题,就能根据标题有选择的进行阅读文章。
 我用java写了一个工具,将从CSDN下载的文章,文件名为:Read_Article.aspId=xxx,我们从文件名很难看出其内容。因此,需要将其改名为网页的标题。
 类名为:setHtmlFileName
 用法为:java setHtmlFileName yourdocpath
 你可以不写文档的路径,系统会采用当前路径。
 在处理时,采用直接将文件改名的方法。所以,在操作前,请做好原文件的备份。
 我使用的系统是:win2k+j2sdk1.4.0
 时间:2003-10-26 15:31
 如果你在使用的时候遇到问题,请与我联系。 
 email:[email protected]
 QQ:19843788
 CSDN nickname:hajavaor
 
 程序特色:
   1、用户提供目录,自动将该目录下非htm的文件改为网页的标题。
   2、程序仅执行改名的操作,因此效率较高。
   3、充分考虑了文件名的合性性的验证
   4、有重复文件,重新命名文件,格式为:原文件名+.复制_x.htm


   
   

附源文件:
 
<pre>
//author: hajavaor(CSDN nickname)
//name:caozhaoyong, Beijing
//date:2003-10-26 15:31
//mail:[email protected]
//QQ:19843788
//file name:setHtmlFileName.java

import java.io.*;
public class setHtmlFileName{
 public static void main(String args[]) {
  String strUserPath = System.getProperty("user.dir");
  File dir=null;
  String strFilePath=null;

  if (args.length!=0){   
   strUserPath = args[0].trim();
  }

  try{
   dir = new File(strUserPath);
  }
  catch(Exception ex){
   System.err.println("error:"+ex.getMessage());
   System.exit(0);
  }
  String strWorkingPath=null;
  
  if (dir.getAbsoluteFile().getParent()==null){
   strWorkingPath = dir.getAbsoluteFile().getParent()+"\\"+ dir.getPath();
  }
  else{
   strWorkingPath = dir.getPath();
  }
  
  System.out.println("Working directory is:"+strWorkingPath);
  System.out.println("================================");

  if (dir.isDirectory()==false){
   System.out.println("Bad directory. Consult to the Usage.");
   System.exit(0);
  }

  File files[]=null;
  files = dir.listFiles();
  BufferedReader br = null;
  String strFileContent=null;
  String strMid =null;
  String strFileName=null;
  String strFileFullName=null;
  int iFileBegin=-1;
  int iFileEnd=-1;
  File newFile=null;
  int iFilesChanged=0;
  for(int i=0;i<files.length;i++){
   if ((files[i].isFile()) && (!files[i].getName().endsWith(".htm"))){
    try{
     System.out.print("*"+files[i].getName()+"-->");
     strFileName="";
     strFileContent="";
     br = new BufferedReader(new FileReader(files[i]));
     strMid="";
     while ((strMid=br.readLine())!=null){
      strFileContent+=strMid;
      if (strFileContent.indexOf("</title>")!=-1){break;}
      strMid=br.readLine();
     }
     br.close();
     //read title
     iFileBegin = strFileContent.indexOf("<title>");
     iFileEnd=strFileContent.indexOf("</title>");
     if ((iFileBegin!=-1) &&(iFileEnd !=-1)){
      strFileName = strFileContent.substring(iFileBegin+7,iFileEnd);
      strFileName=strFileName.replaceAll("CSDN_文档中心_","");
      //replace some un-support chars in the file name.
      strFileName=strFileName.replaceAll("<","《");
            strFileName=strFileName.replaceAll(">","》");
            strFileName=strFileName.replaceAll("\"","“");
            strFileName=strFileName.replaceAll(":",":");
            strFileName = replaceString(strFileName,'\\',"、");
            strFileName = replaceString(strFileName,'/',"/");
            strFileName = replaceString(strFileName,'*',"*");
            strFileName = replaceString(strFileName,'?',"?");
            strFileName = replaceString(strFileName,'|',"|");
      //begin to manipulate files.      
      strFileFullName=strWorkingPath+"\\"+strFileName;
      newFile = new File(strFileFullName+".htm");      
      if (newFile.exists()){
       strFileName+=".复制_";
       for(int j=1;;j++){        
        strFileFullName =strWorkingPath +"\\"+ strFileName+j;
        newFile = new File(strFileFullName+".htm");
        if (newFile.exists()==false) {
         strFileName+=j;
         break;
        }
       }
      }
      System.out.print(strFileName+".htm--");
      
      if (files[i].renameTo(new File(strFileFullName+".htm"))){
       System.out.println("ok.");
      }
      else{
       System.out.println("failed.");
      }
      iFilesChanged++;
     }
    }
    catch(Exception ex){
     System.out.print("failed. err:"+ex.getMessage());
    }
   }
  }
  System.out.println("================================");
  System.out.println("Job finished. Changed Files:"+iFilesChanged);

 }

 public static String replaceString(String strSource,char char1,String str){
        while (strSource.indexOf(char1)!=-1){
         strSource=strSource.replace(char1,'~');
         strSource=strSource.replaceAll("~",str);
        }
        return strSource;
 }
}

//---the end of the program.

</pre>

本文地址:http://com.8s8s.com/it/it17107.htm