代码改变世界

android文件读取

2015-09-22 13:41  轻量级  阅读(94)  评论(0)    收藏  举报
  1 package com.zmw.myreadapp;  
  2   
  3 import java.io.File;  
  4 import java.io.FileNotFoundException;  
  5 import java.io.IOException;  
  6 import java.io.RandomAccessFile;  
  7   
  8 import android.app.Activity;  
  9 import android.os.Bundle;  
 10 import android.view.MotionEvent;  
 11 import android.view.View;  
 12 import android.view.View.OnTouchListener;  
 13 import android.widget.ScrollView;  
 14 import android.widget.TextView;  
 15 import android.widget.Toast;  
 16   
 17 public class MainActivity extends Activity {  
 18     private ScrollView sv;  
 19     private TextView tv;  
 20     private RandomAccessFile raf;  
 21     private int scrollViewY = 0;  
 22     private StringBuilder sb;  
 23     private long currentPoint;  
 24     private long fileLeght;  
 25     private boolean flag = true;  
 26     /** Called when the activity is first created. */  
 27     @Override  
 28     public void onCreate(Bundle savedInstanceState) {  
 29         super.onCreate(savedInstanceState);  
 30         setContentView(R.layout.activity_main);  
 31 //        sv = (ScrollView) this.findViewById(R.id.scrollView);  
 32         tv = (TextView) this.findViewById(R.id.textView);  
 33         sv = (ScrollView) this.findViewById(R.id.scrollView);  
 34           
 35           
 36           
 37         File file = new File("/sdcard/test.txt");  
 38         try {  
 39             raf = new RandomAccessFile(file, "r");  
 40             fileLeght = raf.length();  
 41             System.out.println("文件总长度: "+fileLeght);  
 42             sb = new StringBuilder();  
 43             for(int i=0; i<=50;i++){  
 44                 if(raf.getFilePointer() != fileLeght){  
 45 //                  string += new String(raf.readLine().getBytes("8859_1"), "gb2312")+("\r\n");  
 46                     sb.append(new String(raf.readLine().getBytes("8859_1"), "gb2312")+("\r\n"));  
 47     //              break;  
 48             }else{  
 49                 break;  
 50             }  
 51             }  
 52               
 53 //          System.out.println(sb);  
 54             currentPoint = raf.getFilePointer();  
 55             System.out.println(currentPoint);  
 56             tv.setText(sb);  
 57 //          tv.setText(string);  
 58               
 59         } catch (FileNotFoundException e) {  
 60             // TODO Auto-generated catch block  
 61             e.printStackTrace();  
 62         } catch (IOException e) {  
 63             // TODO Auto-generated catch block  
 64             e.printStackTrace();  
 65         }  
 66           
 67           
 68         sv.setOnTouchListener(new OnTouchListener() {  
 69   
 70             @Override  
 71             public boolean onTouch(View v, MotionEvent event) {  
 72                 // TODO Auto-generated method stub  
 73 //              string = "";  
 74                 if(event.getAction() == MotionEvent.ACTION_UP){  
 75                     if (sv.getScrollY() == 0) {    
 76                         System.out.println("up");  
 77                           
 78                       
 79                     } else if (sv.getScrollY() - scrollViewY < 2 && sv.getScrollY() >= scrollViewY) {    
 80                         try {  
 81                               
 82                             if(flag){  
 83                                 System.out.println("begin");  
 84                                 raf.seek(currentPoint);  
 85                                   
 86                                 sb.delete(0, sb.length());  
 87                                 for(int i=0; i<=50;i++){  
 88                                     if(raf.getFilePointer() != fileLeght){  
 89 //                                      string += new String(raf.readLine().getBytes("8859_1"), "gb2312")+("\r\n");  
 90                                         sb.append(new String(raf.readLine().getBytes("8859_1"), "gb2312")+("\r\n"));  
 91 //                                      break;  
 92                                     }else{  
 93                                           
 94 //                                        
 95                                         flag = false;  
 96                                         break;  
 97                                     }  
 98                             }  
 99                               
100                                   
101                                   
102 //                          System.out.println(string);  
103                               
104                             currentPoint = raf.getFilePointer();  
105                             tv.setText(sb);  
106 //                          tv.setText(string);  
107                             sv.scrollTo(0, 0);  
108                               
109                             }  
110                               
111                               
112                               
113                         } catch (IOException e) {  
114                             // TODO Auto-generated catch block  
115                             e.printStackTrace();  
116                         }  
117                     } else {    
118                         scrollViewY = sv.getScrollY();  
119 //                      System.out.println(sv.getScrollY());  
120                     }    
121                     if(!flag && (tv.getHeight() - sv.getScrollY() <= 362)){  
122                             Toast.makeText(getApplicationContext(), "本文已结束",  
123                                      Toast.LENGTH_SHORT).show();  
124                     }  
125                     System.out.println(tv.getHeight());  
126                     System.out.println(sv.getScrollY());  
127                       
128                 }  
129                   
130                 return false;  
131             }  
132               
133         });  
134     }  
135       
136       
137       
138 }