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

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>
            亚洲国内欧美| 黄色一区二区三区| 欧美日韩国内自拍| 亚洲日本欧美| 亚洲国产精品久久精品怡红院| 亚洲国产影院| 欧美激情亚洲另类| 一区二区三区成人| 亚洲午夜女主播在线直播| 亚洲国产精品久久久| 快射av在线播放一区| 一区二区精品在线| 9i看片成人免费高清| 亚洲精品久久久久| 国产精品久久久免费| 午夜久久资源| 久久免费视频网站| 亚洲二区免费| 亚洲性感激情| 加勒比av一区二区| 欧美a级在线| 欧美日韩免费在线| 久久久久久免费| 欧美乱妇高清无乱码| 美国成人毛片| 影音欧美亚洲| 先锋影音久久久| 亚洲影院在线观看| 欧美日韩国产页| 欧美激情一区二区三区不卡| 国产一区二区三区黄视频| 亚洲毛片一区二区| 在线成人亚洲| 欧美中文字幕在线| 亚洲影音先锋| 欧美亚洲在线| 久久九九全国免费精品观看| 欧美日韩一区在线播放| 亚洲精品一二| 在线亚洲国产精品网站| 欧美精品videossex性护士| 先锋影音国产精品| 蜜桃伊人久久| 亚洲人成网在线播放| 亚洲欧洲另类国产综合| 美女被久久久| 亚洲美女毛片| 午夜日韩在线| 韩日欧美一区二区三区| 亚洲啪啪91| 免费观看成人| 亚洲高清在线观看| 亚洲免费成人av| 欧美精品国产精品日韩精品| 欧美二区在线| 亚洲精品激情| 欧美视频1区| 亚洲免费人成在线视频观看| 久久久久国产精品一区| 国产综合第一页| 久热精品视频在线免费观看| 欧美激情第9页| 亚洲欧洲av一区二区三区久久| 国产精品日本| 欧美99久久| 亚洲欧美日韩第一区| 欧美国产亚洲视频| 亚洲永久在线观看| 狠狠色丁香婷综合久久| 欧美精品一区在线播放| 在线天堂一区av电影| 欧美视频在线观看免费| 性亚洲最疯狂xxxx高清| 欧美好骚综合网| 亚洲精选久久| 欧美日韩一区二区三区免费| 亚洲一区区二区| 亚洲精品影视| 亚洲缚视频在线观看| 亚洲一二三区精品| 一道本一区二区| 亚洲第一在线综合网站| 久久综合久久综合久久综合| 亚洲在线观看免费视频| 亚洲人体一区| 亚洲人体影院| 亚洲美女精品一区| 亚洲激情综合| 亚洲人成网站999久久久综合| 国产亚洲一区二区三区在线播放| 欧美视频三区在线播放| 亚洲精品一区二区三区四区高清 | 午夜精品视频| 国产精品99久久不卡二区| 亚洲日本黄色| 亚洲视频第一页| 亚洲女同同性videoxma| 欧美一区二区三区四区在线| 欧美一区二区免费| 欧美电影免费观看高清完整版| 亚洲电影免费在线观看| 亚洲天堂免费观看| 亚洲男女自偷自拍图片另类| 性感少妇一区| 欧美激情亚洲综合一区| 9色porny自拍视频一区二区| 亚洲手机在线| 欧美精品一区二区在线播放| 国产精品久久国产愉拍| 亚洲国产精品久久91精品| 国产精品99久久久久久www| 亚洲人成网站色ww在线| 一区二区免费在线播放| 亚洲黄色一区| 亚洲国产一区二区三区a毛片| 欧美日韩国产首页| 日韩一级二级三级| 亚洲午夜日本在线观看| 欧美激情小视频| 亚洲国产精品成人综合| 久久久国产亚洲精品| 亚洲性视频h| 国产精品久久久久久久久久尿| 亚洲精品久久7777| 久久视频免费观看| 欧美在线观看网址综合| 国产日本欧美一区二区| 在线中文字幕不卡| 亚洲乱码国产乱码精品精 | 久久精品中文| 国产欧亚日韩视频| 久久久久看片| 老司机67194精品线观看| 亚洲高清一区二| 亚洲精品视频一区| 国产精品欧美日韩| 麻豆精品一区二区综合av| 久久综合狠狠综合久久激情| 亚洲电影在线看| 一区二区三区**美女毛片| 欧美日韩一区二区欧美激情 | 亚洲国产另类精品专区| 91久久久久久久久| 欧美日韩免费区域视频在线观看| 欧美日韩国产在线观看| 久久久久se| 欧美三日本三级少妇三99 | 亚洲欧美一区二区精品久久久| 久久精品视频免费观看| 亚洲午夜极品| 欧美日韩精品欧美日韩精品 | 亚洲欧洲日本国产| 欧美国产日韩一区二区| 老司机成人网| 国产精品视频内| 在线天堂一区av电影| 亚洲永久视频| 欧美精品97| 欧美激情亚洲另类| 一区二区三区欧美亚洲| 欧美精品亚洲一区二区在线播放| 欧美黄色免费| 夜夜夜精品看看| 国产精品区一区二区三| 中文日韩电影网站| 亚洲尤物在线视频观看| 国产精品伦一区| 久久精品国产77777蜜臀| 毛片av中文字幕一区二区| 国产主播一区| 欧美黄色aa电影| 亚洲视频欧美在线| 久久久视频精品| 亚洲欧洲一区| 国产麻豆精品久久一二三| 久久九九免费视频| 亚洲精品1区| 欧美亚洲视频一区二区| 一区二区三区在线免费观看| 久久性色av| 一本色道久久综合精品竹菊 | 欧美77777| 午夜精品一区二区三区在线| 在线看日韩av| 国产精品一区二区三区久久| 美女免费视频一区| 午夜精品国产| 99视频精品在线| 欧美大片国产精品| 欧美专区在线观看一区| 亚洲作爱视频| 在线观看亚洲视频| 国产精品毛片高清在线完整版| 久久综合五月天婷婷伊人| 亚洲自拍三区| 亚洲成色777777在线观看影院| 欧美日韩另类国产亚洲欧美一级| 久久精品99国产精品| 亚洲天堂av在线免费| 亚洲日韩视频|