首页 > 代码库 > android按行读取文件内容的几个方法
android按行读取文件内容的几个方法
一、简单版
1 import java.io.FileInputStream; 2 void readFileOnLine(){ 3 String strFileName = "Filename.txt"; 4 FileInputStream fis = openFileInput(strFileName); 5 StringBuffer sBuffer = new StringBuffer(); 6 DataInputStream dataIO = new DataInputStream(fis); 7 String strLine = null; 8 while((strLine = dataIO.readLine()) != null) { 9 sBuffer.append(strLine + “\n");10 }11 dataIO.close();12 fis.close();13 }
二、简洁版
public static String ReadTxtFile(String strFilePath) { String path = strFilePath; String content = ""; //文件内容字符串 File file = new File(path); //打开文件 if (file.isDirectory()) //如果path是传递过来的参数,可以做一个非目录的判断 { Log.d("TestFile", "The File doesn‘t not exist."); } else { try { InputStream instream = new FileInputStream(file); if (instream != null) { InputStreamReader inputreader = new InputStreamReader(instream); BufferedReader buffreader = new BufferedReader(inputreader); String line; //分行读取 while (( line = buffreader.readLine()) != null) { content += line + "\n"; } instream.close(); } } catch (java.io.FileNotFoundException e) { Log.d("TestFile", "The File doesn‘t not exist."); } catch (IOException e) { Log.d("TestFile", e.getMessage()); } } return content; }
三、用于长时间使用的apk,并且有规律性的数据
1,逐行读取文件内容
1 //首先定义一个数据类型,用于保存读取文件的内容 2 class WeightRecord { 3 String timestamp; 4 float weight; 5 public WeightRecord(String timestamp, float weight) { 6 this.timestamp = timestamp; 7 this.weight = weight; 8 9 }10 }11 12 //开始读取13 private WeightRecord[] readLog() throws Exception {14 ArrayList<WeightRecord> result = new ArrayList<WeightRecord>();15 File root = Environment.getExternalStorageDirectory();16 if (root == null)17 throw new Exception("external storage dir not found");18 //首先找到文件19 File weightLogFile = new File(root,WeightService.LOGFILEPATH);20 if (!weightLogFile.exists())21 throw new Exception("logfile ‘"+weightLogFile+"‘ not found");22 if (!weightLogFile.canRead())23 throw new Exception("logfile ‘"+weightLogFile+"‘ not readable");24 long modtime = weightLogFile.lastModified();25 if (modtime == lastRecordFileModtime)26 return lastLog;27 // file exists, is readable, and is recently modified -- reread it.28 lastRecordFileModtime = modtime;29 // 然后将文件转化成字节流读取30 FileReader reader = new FileReader(weightLogFile);31 BufferedReader in = new BufferedReader(reader);32 long currentTime = -1;33 //逐行读取34 String line = in.readLine();35 while (line != null) {36 WeightRecord rec = parseLine(line);37 if (rec == null)38 Log.e(TAG, "could not parse line: ‘"+line+"‘");39 else if (Long.parseLong(rec.timestamp) < currentTime)40 Log.e(TAG, "ignoring ‘"+line+"‘ since it‘s older than prev log line");41 else {42 Log.i(TAG,"line="+rec);43 result.add(rec);44 currentTime = Long.parseLong(rec.timestamp);45 }46 line = in.readLine();47 }48 in.close();49 lastLog = (WeightRecord[]) result.toArray(new WeightRecord[result.size()]);50 return lastLog;51 }52 //解析每一行53 private WeightRecord parseLine(String line) {54 if (line == null)55 return null;56 String[] split = line.split("[;]");57 if (split.length < 2)58 return null;59 if (split[0].equals("Date"))60 return null;61 try {62 String timestamp =(split[0]);63 float weight = Float.parseFloat(split[1]) ;64 return new WeightRecord(timestamp,weight);65 }66 catch (Exception e) {67 Log.e(TAG,"Invalid format in line ‘"+line+"‘");68 return null;69 }70 }
2,保存为文件
1 public boolean logWeight(Intent batteryChangeIntent) { 2 Log.i(TAG, "logBattery"); 3 if (batteryChangeIntent == null) 4 return false; 5 try { 6 FileWriter out = null; 7 if (mWeightLogFile != null) { 8 try { 9 out = new FileWriter(mWeightLogFile, true);10 }11 catch (Exception e) {}12 }13 if (out == null) {14 File root = Environment.getExternalStorageDirectory();15 if (root == null)16 throw new Exception("external storage dir not found");17 mWeightLogFile = new File(root,WeightService.LOGFILEPATH);18 boolean fileExists = mWeightLogFile.exists();19 if (!fileExists) {20 if(!mWeightLogFile.getParentFile().mkdirs()){21 Toast.makeText(this, "create file failed", Toast.LENGTH_SHORT).show();22 }23 mWeightLogFile.createNewFile();24 }25 if (!mWeightLogFile.exists()) {26 Log.i(TAG, "out = null");27 throw new Exception("creation of file ‘"+mWeightLogFile.toString()+"‘ failed");28 }29 if (!mWeightLogFile.canWrite()) 30 throw new Exception("file ‘"+mWeightLogFile.toString()+"‘ is not writable");31 out = new FileWriter(mWeightLogFile, true);32 if (!fileExists) {33 String header = createHeadLine();34 out.write(header);35 out.write(‘\n‘);36 }37 }38 Log.i(TAG, "out != null");39 String extras = createBatteryInfoLine(batteryChangeIntent);40 out.write(extras);41 out.write(‘\n‘);42 out.flush();43 out.close();44 return true;45 } catch (Exception e) {46 Log.e(TAG,e.getMessage(),e);47 return false;48 }49 }
android按行读取文件内容的几个方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。