青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

life02

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  197 隨筆 :: 3 文章 :: 37 評論 :: 0 Trackbacks
  1 
http://topic.csdn.net/u/20111214/20/2534c03f-5447-4541-91e2-1ee2ca97c786.html?2906

  2 package Cool;
  3 
  4 import java.io.UnsupportedEncodingException;
  5 import java.util.ArrayList;
  6 import java.util.List;
  7 
  8 import Adapter.MyTextView;
  9 import Util.CT;
 10 import android.widget.TextView;
 11 
 12 public class TextReader {
 13     /** 文件的顯示控件 */
 14     private TextView mTextView;
 15 
 16     /** 文件名 */
 17     private String mFilePath = null;
 18 
 19     /** 默認的文件編碼形式 */
 20     private String mEncoding = "gb2312";
 21 
 22     /** 文件末尾 */
 23     private boolean mEndOfDoc = false;
 24 
 25     /** 文件開頭 */
 26     private boolean mBeforeOfDoc = true;
 27 
 28     /** 當前顯示緩沖的顯示行列表 */
 29     private List<TxtLine> mCurrentList = new ArrayList<TxtLine>();
 30 
 31     /** 讀取文件的輸入流工具類 */
 32     private RandomAccessRead mRaf = null;
 33 
 34     /** 用于保存部分文件的緩沖區大小 */
 35     private int mDataLengthOfOneDoc = 100 * 1024;
 36 
 37     /** 屏幕寬度和高度 */
 38     private int mViewWidth, mViewHeight;
 39 
 40     /** 文件大小 */
 41     private long mFileLength;
 42 
 43     /** 緩沖區中用于顯示當前頁面的第一行 */
 44     private int mCurrentLine = 0;
 45 
 46     /** 緩沖區中用于顯示當前頁面的起始索引 */
 47     private int mCurrentOffset = 0;
 48 
 49     /** 文件中用于顯示當前頁面的起始索引 */
 50     private int mStartOffset = 0;
 51 
 52     /** 用于顯示當前頁面的數組的起始索引 */
 53     private int mDataStartLocation = 0;
 54 
 55     /** 用于顯示當前頁面的數組的結尾索引 */
 56     private int mDataEndLocation = 0;
 57 
 58     /** 當前顯示的文件大小百分比 */
 59     private int mPercent = 0;
 60 
 61     /** 文件中用于顯示當前頁面的結尾索引 */
 62     private int mEndOffset = 0;
 63 
 64     /** 用于顯示當前頁面的數組 */
 65     private byte[] mScreenData = null;
 66 
 67     /** 用于顯示的緩沖數組 */
 68     private byte[] mDisplayBuffer = null;
 69 
 70     /**
 71      * 構造函數
 72      * 
 73      * @param mTextView
 74      *            顯示控件
 75      * @param mScreenWidth
 76      *            屏幕寬度
 77      * @param mScreenHeight
 78      *            屏幕高度
 79      * @param mFilePath
 80      *            文件路徑
 81      * @param mEncoding
 82      *            文件編碼
 83      */
 84     public TextReader(MyTextView mTextView, int mScreenWidth, int mScreenHeight,
 85             String mFilePath, String mEncoding) {
 86         this.mTextView = mTextView;
 87         this.mFilePath = mFilePath;
 88         this.mEncoding = mEncoding;
 89         this.mViewWidth = mScreenWidth;
 90         this.mViewHeight = mScreenHeight;
 91         init();
 92     }
 93 
 94     public void readFile() {
 95         readNextBuffer();
 96         analyzeDisplayBuffer();
 97         displayNextScreen(0);
 98     }
 99 
100     /**
101      * 獲取讀取文件的輸入流以及文件大小
102      */
103     private void init() {
104         // TODO Auto-generated method stub
105         this.mRaf = new RandomAccessRead(mFilePath);
106         this.mFileLength = mRaf.length();
107         if (this.mFileLength == 0) {
108             mTextView.setText(Constant.NODATAINFILE);
109             return;
110         }
111     }
112 
113     /**
114      * 獲取下一個緩沖區
115      */
116     private void readNextBuffer() {
117         mRaf.openNewStream();
118         mRaf.locate(mStartOffset);
119         byte[] b = new byte[mDataLengthOfOneDoc];
120         mCurrentOffset = mStartOffset;
121         int actualLength = mRaf.readBytes(b);
122         if (mStartOffset == 0) {
123             mBeforeOfDoc = true;
124         } else {
125             mBeforeOfDoc = false;
126         }
127         if (actualLength < mDataLengthOfOneDoc) {
128             mEndOfDoc = true;
129         } else {
130             mEndOfDoc = false;
131         }
132 
133         if (actualLength == -1 && mScreenData.length == 0) {// 意外到了文件流的末尾或者
134             mTextView.setText("讀取文件失或者文件緩沖區失敗");
135             return;
136         }
137 
138         if (mEndOfDoc) {
139             mDisplayBuffer = new byte[actualLength];
140             System.arraycopy(b, 0, mDisplayBuffer, 0, actualLength);
141             b = null;
142             System.gc();
143             return;
144         }
145         /** 最后一個換行符的索引 */
146         int readDataLength = actualLength;
147         int nLocation = 0;
148         while (readDataLength > 0) {
149             if ((b[readDataLength - 1& 0xff== 10) {
150                 nLocation = readDataLength;
151                 break;
152             }
153             readDataLength--;
154         }
155         if (nLocation == 0) {
156             System.exit(1);
157         }
158         int displayLength = nLocation;
159         mDisplayBuffer = new byte[displayLength];
160         System.arraycopy(b, 0, mDisplayBuffer, 0, displayLength);
161         b = null;
162         System.gc();
163     }
164 
165     /**
166      * 獲取上一個緩沖區
167      */
168     private void readPreBuffer() {
169         int offsetOfLastScreen = mCurrentList.get(mCurrentLine).offset;
170         if (offsetOfLastScreen <= mDataLengthOfOneDoc) {
171             mBeforeOfDoc = true;
172             // if(offsetOfLastScreen>=mFileLength){
173             // mEndOfDoc=true;
174             // }
175             byte[] b = new byte[offsetOfLastScreen];
176             mRaf.openNewStream();
177             int actualLength = mRaf.readBytes(b);
178             if (actualLength < offsetOfLastScreen) {
179                 mEndOfDoc = true;
180             } else {
181                 mEndOfDoc = false;
182             }
183             if (actualLength == -1 && mScreenData.length == 0) {// 意外到了文件流的末尾或者
184                 mTextView.setText("讀取文件失或者文件緩沖區失敗");
185                 return;
186             }
187 
188             if (mEndOfDoc) {
189                 mDisplayBuffer = new byte[actualLength];
190                 System.arraycopy(b, 0, mDisplayBuffer, 0, actualLength);
191                 b = null;
192                 System.gc();
193                 mCurrentOffset = 0;
194                 return;
195             }
196             /** 最后一個換行符的索引 */
197             int readDataLength = actualLength;
198             int nLocation = 0;
199             while (readDataLength > 0) {
200                 if ((b[readDataLength - 1& 0xff== 10) {
201                     nLocation = readDataLength;
202                     break;
203                 }
204                 readDataLength--;
205             }
206             if (nLocation == 0) {
207                 System.exit(1);
208             }
209             int displayLength = nLocation;
210             mDisplayBuffer = new byte[displayLength];
211             System.arraycopy(b, 0, mDisplayBuffer, 0, displayLength);
212             b = null;
213             System.gc();
214             mCurrentOffset = 0;
215             return;
216         }
217 
218         int skipLength = offsetOfLastScreen - mDataLengthOfOneDoc;
219         mRaf.openNewStream();
220         mRaf.locate(skipLength);
221         mCurrentOffset = skipLength;
222         byte[] b = new byte[mDataLengthOfOneDoc];
223         int readLength = mRaf.readBytes(b);
224         mBeforeOfDoc = false;
225         if (readLength < mDataLengthOfOneDoc) {
226             mEndOfDoc = true;
227         }
228         if (readLength == -1 && mScreenData.length == 0) {// 意外到了文件流的末尾或者
229             mTextView.setText("讀取文件失或者文件緩沖區失敗");
230             return;
231         }
232 
233         int nlocation = 0;
234         while (nlocation < readLength) {
235             if ((b[readLength - 1& 0xff== 10) {
236                 nlocation = readLength;
237                 break;
238             }
239             readLength--;
240         }
241         if (nlocation == 0) {
242             System.exit(1);
243         }
244 
245         mDisplayBuffer = new byte[readLength];
246         System.arraycopy(b, 0, mDisplayBuffer, 0, readLength);
247         b = null;
248         System.gc();
249     }
250 
251 
http://topic.csdn.net/u/20111026/15/18c77efa-f41c-4315-8023-550a3732bd76.html?14299
   
posted on 2011-12-15 22:13 life02 閱讀(205) 評論(0)  編輯 收藏 引用 所屬分類: Android開發
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一级欧美一级在线播放| 欧美日韩综合一区| 欧美sm视频| 久久久天天操| 理论片一区二区在线| 久久久久国产精品午夜一区| 久久久.com| 欧美va天堂在线| 欧美激情一区二区三区不卡| 亚洲人成7777| 久久久综合网| 欧美成年人视频网站| 亚洲激情欧美激情| 一区二区欧美亚洲| 亚洲欧美日韩国产综合在线| 亚洲欧美视频在线| 久久久噜久噜久久综合| 欧美电影美腿模特1979在线看| 老司机午夜精品| 欧美精品自拍偷拍动漫精品| 国产精品爽爽爽| 黄色成人免费观看| 日韩午夜剧场| 久久精品亚洲一区二区| 亚洲国产精品va在线看黑人动漫| 一区二区三区国产精华| 久久精品论坛| 欧美日韩日日夜夜| 伊人色综合久久天天| 制服丝袜亚洲播放| 久久漫画官网| 亚洲天堂男人| 欧美高清不卡在线| 国产一区二区三区四区三区四| 亚洲精品美女| 欧美在线观看一区| 亚洲伦理在线观看| 久久精品视频免费播放| 久久久久九九视频| 欧美激情视频免费观看| 另类尿喷潮videofree | 亚洲高清在线精品| 一区二区三区国产盗摄| 另类天堂视频在线观看| 国产精品乱码| 一区二区三区视频在线| 欧美a级在线| 午夜一区二区三区不卡视频| 欧美日韩一区二区三区在线视频| 韩国v欧美v日本v亚洲v| 亚洲午夜国产成人av电影男同| 欧美99在线视频观看| 午夜精品久久久久久久| 国产精品扒开腿爽爽爽视频| 亚洲人午夜精品免费| 猛干欧美女孩| 欧美在线观看一二区| 国产精品永久免费| 亚洲欧美亚洲| 亚洲一区二区三区在线看| 欧美三级在线视频| 亚洲一区二区三区四区五区黄| 亚洲精品偷拍| 欧美日韩在线一区二区三区| 亚洲六月丁香色婷婷综合久久| 欧美高清在线观看| 欧美成人高清| 日韩视频在线免费| 日韩午夜免费视频| 国产精品久久久久久久久| 亚洲无限av看| 亚洲女女女同性video| 国产日韩成人精品| 六十路精品视频| 免费在线观看日韩欧美| 日韩视频―中文字幕| 99成人在线| 国产精品毛片大码女人| 欧美一二三视频| 久久精品青青大伊人av| 亚洲国产婷婷香蕉久久久久久| 亚洲国产精品悠悠久久琪琪| 欧美精品在线一区二区| 亚洲综合视频一区| 欧美一区二区日韩一区二区| 亚洲电影免费在线| 99av国产精品欲麻豆| 国产精品一区二区三区观看| 久久蜜桃精品| 欧美激情无毛| 久久av在线看| 模特精品在线| 亚洲视频在线观看| 午夜在线成人av| 91久久极品少妇xxxxⅹ软件| 9久草视频在线视频精品| 国产乱码精品一区二区三区五月婷| 国模私拍视频一区| 亚洲国产精品第一区二区| 亚洲国产精品一区二区www在线| 欧美日韩亚洲精品内裤| 久久久国产精品一区二区三区| 久久久精品2019中文字幕神马| 亚洲精品一区二区三区99| 亚洲午夜av| 亚洲日韩欧美一区二区在线| 亚洲欧美成人在线| 亚洲狼人精品一区二区三区| 午夜影院日韩| 亚洲少妇中出一区| 久色成人在线| 久久精品日韩| 欧美天堂亚洲电影院在线播放| 久久天天狠狠| 国产精品成人v| 亚洲黄色成人网| 在线免费不卡视频| 午夜视频在线观看一区二区| 中日韩视频在线观看| 玖玖国产精品视频| 久久婷婷国产麻豆91天堂| 国产精品青草综合久久久久99| 欧美成人精品三级在线观看 | 亚洲精品中文字幕女同| 国产性色一区二区| 一本色道久久综合亚洲精品小说| 樱桃视频在线观看一区| 亚洲一区精品在线| 亚洲一区二区三区视频播放| 欧美日本国产视频| 亚洲国产精品999| 亚洲电影在线播放| 久久激情五月激情| 久久男人资源视频| 国产一区二区三区高清| 性欧美超级视频| 欧美亚洲视频| 国产精品毛片a∨一区二区三区| 亚洲精选在线| 亚洲久久一区| 欧美美女bbbb| 99国产精品久久久久久久久久 | 国产精品日韩久久久久| 亚洲理论在线| 亚洲午夜在线观看视频在线| 欧美人牲a欧美精品| 日韩视频一区二区在线观看 | 久久久久久夜精品精品免费| 久久精品国产清高在天天线| 国产日韩欧美在线播放不卡| 午夜一区不卡| 看欧美日韩国产| 91久久精品网| 欧美精品三级在线观看| 亚洲美女性视频| 午夜激情亚洲| 国产精品一区二区三区免费观看| 亚洲人成久久| 久久久99久久精品女同性| 欧美日韩一区二区三区视频| 日韩系列欧美系列| 小处雏高清一区二区三区| 国产日韩一区在线| 久久婷婷国产综合精品青草| 91久久精品国产91久久性色tv | 激情综合视频| 欧美a级理论片| 亚洲视频日本| 久久九九国产精品怡红院| 亚洲国产精品电影在线观看| 欧美日韩理论| 欧美一区二区三区久久精品| 欧美高清你懂得| 午夜精品久久久久久久久| 国产在线日韩| 欧美高清在线| 欧美一区二区三区四区夜夜大片 | 国产在线播放一区二区三区| 鲁鲁狠狠狠7777一区二区| 一本大道av伊人久久综合| 久久久蜜桃一区二区人| 亚洲欧洲一区二区三区| 国产精品裸体一区二区三区| 欧美va天堂在线| 欧美伊人久久久久久午夜久久久久 | 亚洲小视频在线观看| 裸体歌舞表演一区二区| 亚洲自拍都市欧美小说| 亚洲福利久久| 国产精品一区二区三区久久久| 欧美大片免费久久精品三p| 午夜视频精品| 亚洲视频欧美视频| 亚洲欧洲一区二区在线观看 | 99re6这里只有精品视频在线观看| 国产精品日本精品| 欧美色区777第一页| 卡通动漫国产精品| 欧美自拍偷拍| 亚洲一区二区免费在线|