lijh_ray

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

今天用JAVA编辑了一段小程序。其缘由如下:我个人很推崇静官的小说《兽血沸腾》,不过汗颜的是看的都是盗版的。今日从网上下载了一个全TXT版本的合集放到MP3上,但由于制作者的原因,他把多个章节放入了一个大的TXT文件中。虽然可以通过文件名称“521-540”章找到一个特定章节,但是即不知道其中具体章节的名称是什么,又难于在没有书签的情况下找到一个特定章节。怎么办?干脆自己编一段程序把这些章节拆析出来算了,这样既能直接找到某一个章节,又能看到章节的名称。

有了这个念头就着手来编写这个程序。今天突发奇想决定用JAVA来编写,用了大概6个小时左右完成了整个工作。其中对于算法的设计有一些反复。本来以为很简单的工作,没有画流程图就开始写代码,到了后来却搞得有点晕乎,于是乎画了流程图,很快就确定了程序哪个地方有问题。但是由于很久没有用JAVA来写程序了,一是因为最近没有这个需求(最近一直再用Delpih写windows应用),二是对JAVA的IDE实在是不敢恭维(个人比较喜欢Jbuilder,那些Eclipse的粉丝不要攻击我)。在用JAVA写程序时遇到了很多不顺手的地方,最后不得已只能不再装B(用JCreator编辑),使用了Eclipse。借助Eclipse进行调试,完成了最终目标。

如果用Delphi可能写代码只要20分钟就能搞定,而用JAVA却折腾了至少3个小时。从这点上看,以学习的身份使用一种语言完成工作确实不太值得。

另,下面把代码附上来。

 

  1 import java.io.*;
  2 
  3 public class PreFile {
  4 
  5     public int outputFile(String fileName, String fileContent) {
  6         try {
  7             File outputFile = new File(fileName);
  8 
  9             OutputStreamWriter osw = new OutputStreamWriter(
 10                     new FileOutputStream(outputFile), "GBK");
 11             osw.write(fileContent, 0, fileContent.length());
 12             osw.close();
 13             return fileContent.length();
 14         } catch (Exception ex) {
 15             ex.printStackTrace();
 16             return -1;
 17         }
 18     }
 19 
 20     public static void main(String[] args) {
 21 
 22         int i, iFileNamePrefix = 1000;
 23         int iChapterTitleStart, iChapterTitleEnd;
 24         boolean bIsFindChapterStart = false;
 25         String sChapterTitle, sChapterContent;
 26 
 27         PreFile pf = new PreFile();
 28         sChapterTitle = new String();
 29         sChapterContent = new String();
 30 
 31         try {
 32 
 33             File path = new File("f:/novel/origin");
 34             File[] ffs = path.listFiles();
 35             for (i = 0; i < ffs.length; i++) {
 36                 InputStreamReader isr = new InputStreamReader(
 37                         new FileInputStream(ffs[i]), "GBK");
 38                 BufferedReader reader = new BufferedReader(isr);
 39 
 40                 String line;
 41 
 42                 while ((line = reader.readLine()) != null) {
 43                     iChapterTitleStart = line.indexOf("");
 44                     iChapterTitleEnd = line.indexOf("");
 45                     if ((iChapterTitleStart != -1&& (iChapterTitleEnd != -1)
 46                             && (iChapterTitleStart < 2)) {
 47                         if ((iChapterTitleEnd - iChapterTitleStart) < 10) {
 48                             if (!bIsFindChapterStart) {
 49                                 sChapterTitle = line;
 50                                 bIsFindChapterStart = true;
 51                                 continue;
 52                             } else {
 53                                 String sFileName = new Integer(
 54                                         ++iFileNamePrefix).toString()
 55                                         .substring(1);
 56                                 sFileName = "f:/novel/out/[" + sFileName + "]"
 57                                         + sChapterTitle + ".txt";
 58                                 System.out
 59                                         .println(pf.outputFile(sFileName,
 60                                                 sChapterTitle + "\n"
 61                                                         + sChapterContent));
 62 
 63                                 sChapterTitle = line;
 64                                 sChapterContent = "";
 65                                 bIsFindChapterStart = true;
 66                                 continue;
 67                             }
 68                         } else {
 69                             sChapterContent += (line + "\n");
 70                         }
 71                     }
 72 
 73                     iChapterTitleStart = line.indexOf("");
 74                     iChapterTitleEnd = line.indexOf("");
 75                     if ((iChapterTitleStart != -1&& (iChapterTitleEnd != -1)
 76                             && (iChapterTitleStart < 2)) {
 77                         if ((iChapterTitleEnd - iChapterTitleStart) < 10) {
 78                             if (bIsFindChapterStart) {
 79                                 String sFileName = new Integer(
 80                                         ++iFileNamePrefix).toString()
 81                                         .substring(1);
 82                                 sFileName = "f:/novel/out/[" + sFileName + "]"
 83                                         + sChapterTitle + ".txt";
 84                                 System.out
 85                                         .println(pf.outputFile(sFileName,
 86                                                 sChapterTitle + "\n"
 87                                                         + sChapterContent));
 88                                 sChapterTitle = line;
 89                                 sChapterContent = "";
 90                                 bIsFindChapterStart = false;
 91                                 continue;
 92                             }
 93                         } else {
 94                             sChapterContent += (line + "\n");
 95                         }
 96                     }
 97 
 98                     sChapterContent += (line + "\n");
 99                 }
100 
101             }
102 
103         } catch (Exception ex) {
104             ex.printStackTrace();
105         }
106     }
107 }
108 
posted on 2008-11-17 17:10  鸿鹄焉知燕雀  阅读(197)  评论(0编辑  收藏  举报