小说网站的章节截取_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 小说网站的章节截取

小说网站的章节截取

 2013/7/27 21:20:54  _Yggd  程序员俱乐部  我要评论(0)
  • 摘要:大家在看小说的时候有没有想过小说的章回是怎么排出来的?还有是怎么存储的?关于怎么存储的话,不外乎两种情况1、文件存储2、数据库存储1、第一种方式是操作起来是比较方便,比如用户点击小说的章回,然后后台就直接返回章节的字符串信息到前台。不好的一点就是管理起来不是那么方便,因为本来是应该存放进数据库中的数据,现在却存在硬盘中,而且数据库中操作起来比操作系统磁盘启动读取数据快用java中的流操作如下:publicstaticfinalStringCHAPTER_RE="^\\s*[卷第].{1,20
  • 标签:网站
大家在看小说的时候有没有想过小说的章回是怎么排出来的?还有是怎么存储的?

关于怎么存储的话,不外乎两种情况
1、文件存储
2、数据库存储

1、第一种方式是操作起来是比较方便,比如用户点击小说的章回,然后后台就直接返回
章节的字符串信息到前台。不好的一点就是管理起来不是那么方便,因为本来是应该存放进数据库中的数据,现在却存在硬盘中,而且数据库中操作起来比操作系统磁盘启动读取数据快
用java中的流操作如下:

public static final String CHAPTER_RE = "^\\s*[卷第].{1,20}[卷章].*$";

InputStreamReader istream = new InputStreamReader(new FileInputStream(file), "GBK");
BufferedReader stream = new BufferedReader(istream);
StringBuilder index = new StringBuilder(); //建立索引
int begin,end;
int lineNumber = 0; //行号
String chapterTitle = "前言";
String line = null;   //小说的行数
int chapterCount = 0;  //章节

while ((line = stream.readLine()) != null) {
    lineNumber++;
    if (line.matches(CHAPTER_RE)) {
if (chapterCount <= 6) {
    desc.append(line);
    desc.append("\r\n");
}
chapterCount++;
tailLineNumber = lineNumber - 1;
                index.append("tile="+chapterTitle);
index.append("head="+begin);
index.append("tail="+end);
                index.append(";");
chapterTitle = line;
begin = end;
    }
}


之后将建立起来的做引存进数据库中的text格式的数据中,读取索引的时候对数据库中的索引用java的string方法进行截取","操作就可以返回小说的章节行号了(只是读取文件的话不会发生并发读写的问题的)
用户点击章节的时候可以直接对索引的文件行号进行毒操作返回前台页面


如果用数据库存储文本内容的话,最好重新建立一个新的表空间,然后对主表主键进行引用
(哪本数据库书介绍的说大数据比clob  blob之类的文件最好新建表空间引用主表,这样在每次查询的时候就不用涉及到大数据了,比较快一点儿),但是对于文本的操作现在各种数据库的字符串函数不一样,具体应该参考各个数据库的文档
发表评论
用户名: 匿名