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 }