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

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>
            欧美午夜性色大片在线观看| 亚洲色图自拍| 欧美激情视频一区二区三区在线播放| 欧美激情一区二区三级高清视频 | 国产精品jvid在线观看蜜臀| 欧美伊人影院| 欧美在线观看网站| 久久九九热免费视频| 国产三级欧美三级| 亚洲精品视频在线看| 亚洲欧美日韩国产综合| 香蕉成人久久| 亚洲图片自拍偷拍| 免费视频一区| 麻豆精品网站| 国产亚洲欧洲一区高清在线观看| 亚洲第一精品电影| 午夜免费久久久久| 在线视频中文亚洲| 国产一区二区成人| 欧美日韩中文在线| 在线综合+亚洲+欧美中文字幕| 亚洲欧美在线免费| 性娇小13――14欧美| 久久夜色精品| 欧美激情影院| 欧美影院视频| 久久综合激情| 精品电影一区| 久久中文在线| 老司机成人网| 亚洲国产导航| 亚洲伊人一本大道中文字幕| 亚洲欧美日韩国产成人| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲欧美高清| 99热精品在线| 欧美一级大片在线免费观看| 欧美高清视频一区二区三区在线观看| 国产女主播一区二区| 亚洲视频一区二区| 亚洲欧美久久久久一区二区三区| 曰韩精品一区二区| 亚洲午夜视频在线| 乱中年女人伦av一区二区| 亚洲影院免费| 一区二区三区高清| 亚洲激情在线观看| 亚洲欧美国产va在线影院| 国产一区二区在线观看免费| 国产综合色在线视频区| 国产欧美日韩视频| 国产精品99一区| 免费欧美视频| 欧美精品在线播放| 狠狠色丁香婷婷综合久久片| 欧美在现视频| 久久精品成人一区二区三区蜜臀 | 国产精品一区毛片| 欧美在线视频a| 亚洲国产日本| 在线成人www免费观看视频| 午夜精品久久久久久99热| 免费成人小视频| 欧美一区二区三区的| 亚洲毛片在线| 国产精品五区| 欧美成人xxx| 亚洲在线网站| 欧美尤物一区| 欧美日韩高清在线播放| 最新高清无码专区| 亚洲国产成人精品久久久国产成人一区| 中文无字幕一区二区三区| 亚洲乱码国产乱码精品精98午夜 | 欧美乱人伦中文字幕在线| 男女激情久久| 亚洲国产精品va在线观看黑人| 亚洲第一福利社区| 欧美午夜在线视频| 日韩视频一区二区| 久久激情综合| 亚洲欧美一区二区三区极速播放| 国产精品久久久久久久久| 亚洲人成亚洲人成在线观看图片 | 久久国产精品一区二区| 亚洲毛片在线观看.| 一本色道久久综合亚洲精品不| 亚洲精品视频免费在线观看| 99成人在线| 午夜精品久久久久| 久久男人av资源网站| 欧美国产一区视频在线观看| 欧美天天影院| 亚洲国产精品va在看黑人| 午夜免费在线观看精品视频| 亚洲一区久久| 国产精品xvideos88| 亚洲免费观看| 亚洲一区在线看| 亚洲盗摄视频| 欧美一区二区三区四区高清 | 亚洲一级黄色| 免费国产一区二区| 亚洲欧美日本精品| 一区二区国产日产| 一区在线电影| 国模叶桐国产精品一区| 亚洲国产一区二区三区青草影视 | 亚洲精选大片| 欧美在线二区| 亚洲一区999| 国产美女精品一区二区三区 | 中文在线一区| 日韩午夜av电影| 一区二区三区四区在线| 国产精品亚洲片夜色在线| 亚洲国产mv| 久久综合综合久久综合| 亚洲国产日韩欧美| 亚洲欧洲日本一区二区三区| 亚洲精品国精品久久99热一| 久久只精品国产| 在线视频你懂得一区二区三区| 欧美在线视频在线播放完整版免费观看| 亚洲第一精品福利| 久久黄色小说| 久久久久一区二区| 国产日产精品一区二区三区四区的观看方式| 亚洲黄色免费电影| 亚洲国内精品| 久久久夜精品| 欧美1区2区| 国产资源精品在线观看| 亚洲制服欧美中文字幕中文字幕| 亚洲一级电影| 国产日本欧美视频| 欧美亚洲视频在线观看| 精品999在线播放| 亚洲日韩第九十九页| 国产日产高清欧美一区二区三区| 久久久久久久性| 欧美fxxxxxx另类| 久久综合九色九九| 欧美日韩一区三区| 久久婷婷亚洲| 久久久久久有精品国产| 亚洲一区二区高清视频| 久久国产精品99精品国产| 国产精品久久午夜夜伦鲁鲁| 亚洲性感激情| 亚洲国产二区| 久久久久国产精品人| 欧美人交a欧美精品| 亚洲高清在线视频| 久久久久国产免费免费| 亚洲精品综合精品自拍| 亚洲一区二区欧美日韩| 欧美大秀在线观看| 一本色道久久综合亚洲91| 欧美二区在线播放| 亚洲国产精品久久| 日韩写真在线| 亚洲片在线资源| 亚洲欧洲日韩综合二区| 日韩天堂在线视频| 亚洲自拍高清| 国产一区二区三区久久悠悠色av | 国产精品一区二区三区久久久| 久久综合九色综合欧美狠狠| 国产精品视频内| 日韩午夜视频在线观看| 亚洲国产精品福利| 欧美肉体xxxx裸体137大胆| 亚洲一区久久久| 欧美二区视频| 午夜在线a亚洲v天堂网2018| 韩日精品中文字幕| 欧美日韩国产电影| 久久久久久久尹人综合网亚洲 | 欧美刺激性大交免费视频| 性欧美大战久久久久久久久| 久久久蜜桃一区二区人| 老牛国产精品一区的观看方式| 亚洲国产经典视频| 国产一区美女| 精品91久久久久| 一区二区三区在线视频免费观看 | 久久9热精品视频| 欧美日韩一区二区三区在线看| 亚洲欧美日韩一区二区在线| 亚洲人www| 久久久综合网| 久久久久久久一区二区| 亚洲精品日韩一| 欧美日韩1区2区3区| 欧美激情一区三区| 另类人畜视频在线| 亚洲欧美日韩中文播放| av成人黄色|