feat: 优化代码

pull/198/head
kunfei 5 years ago
parent fc039c6161
commit f805c53c22
  1. 37
      app/src/main/java/io/legado/app/model/localBook/AnalyzeTxtFile.kt

@ -16,8 +16,10 @@ import java.util.regex.Pattern
object AnalyzeTxtFile { object AnalyzeTxtFile {
private const val folderName = "bookTxt" private const val folderName = "bookTxt"
private const val BLANK: Byte = 0x0a private const val BLANK: Byte = 0x0a
//默认从文件中获取数据的长度 //默认从文件中获取数据的长度
private const val BUFFER_SIZE = 512 * 1024 private const val BUFFER_SIZE = 512 * 1024
//没有标题的时候,每个章节的最大长度 //没有标题的时候,每个章节的最大长度
private const val MAX_LENGTH_WITH_NO_CHAPTER = 10 * 1024 private const val MAX_LENGTH_WITH_NO_CHAPTER = 10 * 1024
val cacheFolder: File by lazy { val cacheFolder: File by lazy {
@ -72,26 +74,21 @@ object AnalyzeTxtFile {
val chapterContent = blockContent.substring(seekPos, chapterStart) val chapterContent = blockContent.substring(seekPos, chapterStart)
//设置指针偏移 //设置指针偏移
seekPos += chapterContent.length seekPos += chapterContent.length
if (toc.size == 0) { //如果当前没有章节,那么就是序章 //获取上一章节
//加入简介 val lastChapter = toc.lastOrNull()
book.intro = chapterContent ?: BookChapter().apply {
//创建当前章节 toc.add(this)
val curChapter = BookChapter() start = 0
curChapter.title = matcher.group() title = "前言"
curChapter.start = chapterContent.toByteArray(charset).size.toLong() }
toc.add(curChapter) //将当前段落添加上一章去
} else { //否则就block分割之后,上一个章节的剩余内容 lastChapter.end =
//获取上一章节 lastChapter.end!! + chapterContent.toByteArray(charset).size
val lastChapter = toc.last() //创建当前章节
//将当前段落添加上一章去 val curChapter = BookChapter()
lastChapter.end = curChapter.title = matcher.group()
lastChapter.end!! + chapterContent.toByteArray(charset).size curChapter.start = lastChapter.end
//创建当前章节 toc.add(curChapter)
val curChapter = BookChapter()
curChapter.title = matcher.group()
curChapter.start = lastChapter.end
toc.add(curChapter)
}
} else { //是否存在章节 } else { //是否存在章节
if (toc.size != 0) { //获取章节内容 if (toc.size != 0) { //获取章节内容
val chapterContent = blockContent.substring(seekPos, matcher.start()) val chapterContent = blockContent.substring(seekPos, matcher.start())

Loading…
Cancel
Save