`
_Yggd
  • 浏览: 86216 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
阅读更多
大家在看小说的时候有没有想过小说的章回是怎么排出来的?还有是怎么存储的?

关于怎么存储的话,不外乎两种情况
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之类的文件最好新建表空间引用主表,这样在每次查询的时候就不用涉及到大数据了,比较快一点儿),但是对于文本的操作现在各种数据库的字符串函数不一样,具体应该参考各个数据库的文档
分享到:
评论

相关推荐

    ChatGPT会不会取代小说家

    正如王安忆所言,文学创作终究需要从现实生活中截取素材,年轻人关心作家和文学,归根结底就是在关心文字背后的现实生活,追寻文学承载的人生意义。 “有些东西貌似传奇, 但它底下 还是我们普通的日常生活。” ...

    [ASP]xiaoshuoguanli整站系统

    发表新作品,允许上传小说封面,及指定该小说是否允许游客浏览,也可指定观看该小说是否需要花费网站金币,如需花费金币,那么每次浏览小说所得金币将加入作者金币内。(可在后台按照个人喜好而设置) 3、增加章节 ...

    简谈计算机病毒.pptx

    计算机病毒产生的历史 1977年:出现在科幻小说中 1983年: Fred Cohen:在计算机安全研讨会上发布 1986年:巴基斯坦两兄弟为追踪非法拷贝其软件的人制造了"巴基斯坦"病毒,成了世界上公认的第一个传染PC兼容机的病毒...

    chrome.exe

    (根据道格拉斯·亚当斯的小说《银河系漫游指南》,42是“生命、宇宙以及任何事情的终极答案”。因此,42这个数字也经常被用来向这一作品致敬) 2014年9月3日下午正式版(37.0.2062.103)发布 [9] 该版本首发于9...

Global site tag (gtag.js) - Google Analytics