*/
private void showTheTxt() { Intent intent = getIntent();
if (intent.getStringExtra(\{//从书架上点击对应的图书信息 filePath = intent.getStringExtra(\Constant.fileLen = intent.getIntExtra(\0); try {
openBy_SysMark(filePath, Constant.fileLen); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {
// TODO Auto-generated catch block e.printStackTrace(); } } } /**
* 根据输入文本文件判断文本所使用的编码,如果传入的默认编码为空,则表示之前尚未检测过编码 *
* @param filePath * 文件路径
* @param defaultEncode 为空表示之前未检测过检测,执行编码检测操作。 */
public static void getCharSet(String filePath, String defaultEncode) { if (defaultEncode.equals(\未检测编码时,执行检测编码操作 {
BufferedInputStream bis = null;//用于检测编码的字节流 charSetName = \设置默认编码为GBK //编码检测代理
CodepageDetectorProxy detector = CodepageDetectorProxy .getInstance();
detector.add(new ParsingDetector(false)); detector.add(UnicodeDetector.getInstance()); detector.add(JChardetFacade.getInstance()); try {
//取得待检测的文件字节流
bis = new BufferedInputStream(new FileInputStream(new File( filePath)));
//根据字节流自动检测出文本的Charset
Charset charset = detector.detectCodepage(bis, 10240); if (charset != null) {//不为空时表示检测到对应的编码类型 charSetName = charset.name();//取文本的编码名 }
} catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {
// TODO Auto-generated catch block e.printStackTrace(); } finally { //关闭字节流 try {
if (bis != null) bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block e.printStackTrace(); } }
// 首次打开时,初始化起始和下一页开始字节位置,以便正确计算处理打开的第一个页面处理显示的字符后,正确的计算当页起始字节和下一页起始字节
fontsPreEnd = 0; fontsNextBegin = 0; } else// 已过检测编码 {
charSetName = defaultEncode; }
Constant.seekbarBytesPer = (float) Constant.fileLen / Constant.seekbarMax;// 计算拖动条每刻度代表的字节数 ini_r_n(charSetName); }
iniPro();// 重新初始化才可以根据以前的记录立即显示之前打开文件的状态 Constant.fontsPreEnd = bundle.getInt(\取查询到的字节开始位置 Constant.charSetName = bundle.getString(\取查询到的文件编码 pagefactory.openBefore(filepath, Constant.fontsPreEnd); pagefactory.onDraw(mCurPageCanvas); mPageWidget.invalidate(); return true; }
return false; }
4.小说内容读取核心代码 *
* @param filepath * @param filelen
* 文件长度,用于判断是否为原来记录的那个文件的依据 * @param charsetName
* 编码
* @param byteBegin
* 打开文件定位到的起始字节位置
* @return true表示文件存在且是与记录的是同一个文件,false表示文件不存在或存在但不是原来那个文件 */
private boolean openBy_userMark(String filepath, int filelen, String charsetName, int byteBegin) { File file = new File(filepath);
if (file.exists() && file.length() == filelen)// 文件是否存在且长度与记录的相等,都true时表示是原来的文件 {
iniPro();// 重新初始化才可以根据以前的记录立即显示之前打开文件的状态 Constant.fontsPreEnd = byteBegin; Constant.charSetName = charsetName;
// pagefactory.openByBefore(filepath, Constant.fontsPreEnd); try {
pagefactory.openBefore(filepath, Constant.fontsPreEnd); pagefactory.onDraw(mCurPageCanvas);
filePath = filepath;// 将此时的文件路径负值给filePath,用于全局文件路径的判断 mPageWidget.invalidate();
} catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {
// TODO Auto-generated catch block e.printStackTrace(); } return true; }
return false; } 致谢
这次毕业设计——基于android的电子阅读器,源自于个人平时喜欢用手机看小说的生活灵感,在选题经过指导老师陈红玲的支持后,经历各种资料查阅,编码开发,测试修改后顺利实现了所预期的部分模块功能。这次毕业设计是对所学知识一次完整的回顾和总结,并在此基础上进行了综合应用和拓展。设计过程让我的实践应用能力得到了提高,也使我了解到自己在软件设计方面还有许多不足,以后为之奋斗。
同时,在完成设计过程中,很多困难跟疑问是在通过查阅资料和老师同学朋友的帮助之下得以解决。在论文修改阶段,特别要感谢指导老师陈红玲,她对于我论文中存在的问题给与了很多指导建议,并且花了很多时间为我调整没修改好的格式。最后,在此我对参考资料的提供者和帮助我的老师同学朋友表示真心感谢。
剽窃文字表述
所学知识一次完整的回顾和总结,并在此基础上进行了综合应用和拓展。设计过程让我的实践应用能力得到了提高, 1.
( 注释:红色文字表示文字复制部分; 黄色文字表示引用部分)
打印 保存
http://check.cnki.net
返回顶部
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库毕业论文(9)(5)在线全文阅读。
相关推荐: