txt 文本处理分页功能的实现:



网上找了txt文本分页,实现小说阅读器的功能找了很久找不到自己想要的,所以自己实现一个专门处理txt文本分页功能的类.有人建议用randomAccessFile 可以随机读取文本的任意位置,大文本也可以读,直接从这个类的方法上找可以实现自己想要的功能.

文本阅读器最重要的功能就是,我点击一个按钮或者滑动一下屏幕就可以是上一页或者下一页。

这个类应该公布两个方法 得到上一页文本内容,得到下一页文本内容。

废话不多说直接上代码:

public class ProcessText {

private long pages;//总页数
    private final int SIZE = 900;//每一页的字节数 字节数固定 
    private long bytescount;//字节总数
    private long currentpage;//当前页面
    private RandomAccessFile readFile;

//构造方法 传入当前页 为了实现书签的功能 记录用户读取的文章位置
    public  ProcessText(File file,int currentpage)  {
        try {

readFile = new RandomAccessFile(file,"r");

bytescount = readFile.length();//获得字节总数
            pages = bytescount/SIZE;//计算得出文本的页数
           this.currentpage=currentpage;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

//定位字节位置 根据页数定位文本的位置
    private void seek(long page){
        try {
            //if(pages)
            readFile.seek(page*SIZE);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

//固定读取 SIZE+30个字节的内容 为什么+30 ?

//读取的为字节 需要进行转码 转码不可能刚好转的就是文本内容,

//一页的末尾 和开始出有可能乱码 每一次多读30个字节 是为了第一页乱码位置

//在第二页就可以正常显示出内容 不影响阅读

private String read(){
        //内容重叠防止 末尾字节乱码
        byte[] chs = new byte[SIZE+30];
        try {

readFile.read(chs);

} catch (IOException e) {
            e.printStackTrace();
        }
        return new String(chs, Charset.forName("utf-8"));
    }

//上一页功能的实现
    public String getPre(){
        String content = null;
        //第一页 的情况 定位在0字节处 读取内容 当前页数不改变
        if(currentpage <= 1){
            seek(currentpage-1);
            content =read();
        }else{
            //其它页 则定位到当前页-2 处 在读取指定字节内容 例如当前定位到第二页的末尾 2*SIZE  上一页应该是第一页 也就是从0位置 开始读取SIZE个字节
            seek(currentpage-2);
            content = read();
            currentpage = currentpage - 1;
        }

return content;
    }

//下一页功能的实现
    public String getNext(){

String content = null;
        if(currentpage >= pages){//当前页为最后一页时候,显示的还是 最后一页 
            seek(currentpage-1);
            content = read();
        }else{
            seek(currentpage);
            content = read();
            currentpage = currentpage +1;
        }

return content;
    }

}

android阅读器里的 txt 文本处理分页功能的实现:相关推荐

  1. 【一年一个小知识】如何往kindle阅读器里传书?

    1.kindle阅读器里自带kindle书城和咪咕阅读的书城,如果说不差钱,联网后可以直接在书城里买电子书. 2.我很抠门的,第一种方法我没用过.以前没有电脑,我是用WLAN传书.点击阅读器里 WLA ...

  2. 下载的小说是PDF文件,不能导入到小说阅读器里怎么办?

    下载的小说是PDF格式的,我们可以把它转换成txt格式,然后就可以将小说导入到小说阅读器里啦~ 我们可以使用okfone PDF转换大师 官网地址将PDF版本的小说转换成txt格式 操作很简单,跟着我 ...

  3. 简单开发的android阅读器源码,包含了读取数据库和文件流处理功能

    原文:简单开发的android阅读器源码,包含了读取数据库和文件流处理功能 源代码下载地址:http://www.zuidaima.com/share/1838906559466496.htm 简单地 ...

  4. Android阅读器的思路(一)

    最近工作业务中遇到了,Android阅读器的需求.面临的第一个问题就是,如何根据屏幕的大小,将一本小说分成每一页需要显示的内容.简单来说,就是把一整本小说的String变成每一页恰好可以显示的Stri ...

  5. android 支持各种格式的阅读器,android txt小说阅读器的实现(完美实现分页阅读,支持常见编码格式)...

    前一阵由于项目的需求,需要一个预览txt文件的功能,于是自己写了一个,简单的txt文件阅读器,实现了点击分页切换.滑动分页切换,效果如下: 既然做出来,想整理一下实现的思路,有时间再封装一下,做成一个 ...

  6. android 阅读器放大镜,制作安卓PDF阅读器:四、实现文本选择之放大镜、长按拖动...

    看到一篇知乎上的文章,<这可能是最好用的一款 PDF 阅读.批注工具~如果他称第二,没人敢称第一!>,看了后下载试用,还好.单就触屏体验而言,没他说的那么好听. 这类国产APP的门面都是非 ...

  7. 开源能翻译英文的Android阅读器

    Filter阅读是我最近写的一个Android的阅读器,用于看英文的书(中文暂时不支持,会乱码,下一版再改). 本文章由"智障的我"原创,转载注明. http://blog.csd ...

  8. 发布一个练笔的 Android 阅读器,轻微仿91 Android 阅读器【后续将提供源码】

    由于是练笔Demo,所以界面上和优化方面并没有太多考虑,只是实现了一些基础功能和一些阅读器所必要的几个功能 阅读界面如下: 底下滚动条,模仿91阅读器的方式显示,按照文本长度百分比记算显示进度条,文本 ...

  9. android 阅读器自动滚动,在Android手机上实现阅读器翻页效果.doc

    在Android手机上实现阅读器翻页效果 先了解各个字母表示的含义:A-把书页翻起来后看到的背面区域B-把书页翻起来后看到的下一页的一角C-当前页的可见部分.a-手指滑动页角到达的位置b-当前页翻起来 ...

最新文章

  1. 1 Knight Moves
  2. agg::rendering_buffer 渲染缓存
  3. Qt5.9生成dll详细步骤
  4. php调用百度天气接口,php使用百度天气接口示例
  5. 服务器虚拟化分为半,服务器虚拟化有哪些?
  6. sougou ubuntu 优麒麟_搜狗输入法 Linux – V2.3 版发布,完美适配优麒麟 19.10
  7. EXC_BAD_ACCESS
  8. 解决: Spring Boot报错 This application has no explicit mapping ... a fallback
  9. Android系统(96)---Android 数据交换解析框架Gson使用详解
  10. html流星雨代码_HTML制作流星雨特效
  11. python3.7中Gluonts与Mxnet安装问题
  12. java下载ftp_Java FTP下载文件
  13. MySQL(15)-----运算符和优先级查询结果拼接处理及CONCAT()、CONCAT_WAS()和GROUP_CONCAT()函数的使用
  14. 【Mybatis架构】Mapper映射文件中的#{}与${}
  15. 服务器上的 smb 协议,使用smb协议python3访问服务器上的远程文件
  16. C语言报错警告合集(转)
  17. java泛型常用特点_?你必须知道的Java泛型
  18. 在WORD中批量修改图片大小
  19. 支付宝/云闪付个人免签
  20. P2327 [SCOI2005]扫雷(递推)

热门文章

  1. MobileNet v2的Inverted Bottleneck为什么可以抵消ReLU激活函数所带来的信息损失
  2. windows下网络诊断基本命令
  3. sketch html尺寸,sketch教程 | 设置常用画板尺寸
  4. Time-Evolving Graph Convolutional Recurrent Network for Traffic Prediction论文笔记
  5. win7电脑给手机开热点流程
  6. java制作手机投射电脑_将Android手机投影到Win10计算机的最简单教程
  7. 高通骁龙MSM8916核心板 ARM Cortex-A53 四核 中文资料
  8. WS2812C IO口模拟控制
  9. ThinkPad开启、禁用触摸板
  10. python 输出列表中元素的位置_python如何读取列表中元素的位置?