您的当前位置:首页正文

android按行读取文件内容的几个方法

来源:好兔宠物网
android按⾏读取⽂件内容的⼏个⽅法

⼀、简单版

复制代码 代码如下:

import java.io.FileInputStream;void readFileOnLine(){

String strFileName = \"Filename.txt\";

FileInputStream fis = openFileInput(strFileName);StringBuffer sBuffer = new StringBuffer();

DataInputStream dataIO = new DataInputStream(fis);String strLine = null;

while((strLine = dataIO.readLine()) != null) { sBuffer.append(strLine + “\\n\");}

dataIO.close();fis.close();}

⼆、简洁版复制代码 代码如下:

//读取⽂本⽂件中的内容

public static String ReadTxtFile(String strFilePath) {

String path = strFilePath;

String content = \"\"; //⽂件内容字符串 //打开⽂件

File file = new File(path);

//如果path是传递过来的参数,可以做⼀个⾮⽬录的判断 if (file.isDirectory()) {

Log.d(\"TestFile\ } 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\ }

catch (IOException e) {

Log.d(\"TestFile\ } }

return content; }

三、⽤于长时间使⽤的apk,并且有规律性的数据1,逐⾏读取⽂件内容复制代码 代码如下:

//⾸先定义⼀个数据类型,⽤于保存读取⽂件的内容 class WeightRecord { String timestamp; float weight;

public WeightRecord(String timestamp, float weight) { this.timestamp = timestamp; this.weight = weight; } }

//开始读取

private WeightRecord[] readLog() throws Exception {

ArrayList result = new ArrayList(); File root = Environment.getExternalStorageDirectory(); if (root == null)

throw new Exception(\"external storage dir not found\"); //⾸先找到⽂件

File weightLogFile = new File(root,WeightService.LOGFILEPATH); if (!weightLogFile.exists())

throw new Exception(\"logfile '\"+weightLogFile+\"' not found\"); if (!weightLogFile.canRead())

throw new Exception(\"logfile '\"+weightLogFile+\"' not readable\"); long modtime = weightLogFile.lastModified(); if (modtime == lastRecordFileModtime) return lastLog;

// file exists, is readable, and is recently modified -- reread it. lastRecordFileModtime = modtime; // 然后将⽂件转化成字节流读取

FileReader reader = new FileReader(weightLogFile); BufferedReader in = new BufferedReader(reader); long currentTime = -1; //逐⾏读取

String line = in.readLine(); while (line != null) {

WeightRecord rec = parseLine(line); if (rec == null)

Log.e(TAG, \"could not parse line: '\"+line+\"'\");

else if (Long.parseLong(rec.timestamp) < currentTime)

Log.e(TAG, \"ignoring '\"+line+\"' since it's older than prev log line\"); else {

Log.i(TAG,\"line=\"+rec); result.add(rec);

currentTime = Long.parseLong(rec.timestamp); }

line = in.readLine(); }

in.close();

lastLog = (WeightRecord[]) result.toArray(new WeightRecord[result.size()]); return lastLog; }

//解析每⼀⾏

private WeightRecord parseLine(String line) { if (line == null)

return null;

String[] split = line.split(\"[;]\"); if (split.length < 2) return null;

if (split[0].equals(\"Date\")) return null; try {

String timestamp =(split[0]);

float weight = Float.parseFloat(split[1]) ;

return new WeightRecord(timestamp,weight); }

catch (Exception e) {

Log.e(TAG,\"Invalid format in line '\"+line+\"'\"); return null; } }

2,保存为⽂件复制代码 代码如下:

public boolean logWeight(Intent batteryChangeIntent) { Log.i(TAG, \"logBattery\");

if (batteryChangeIntent == null) return false; try {

FileWriter out = null;

if (mWeightLogFile != null) { try {

out = new FileWriter(mWeightLogFile, true); }

catch (Exception e) {} }

if (out == null) {

File root = Environment.getExternalStorageDirectory(); if (root == null)

throw new Exception(\"external storage dir not found\");

mWeightLogFile = new File(root,WeightService.LOGFILEPATH); boolean fileExists = mWeightLogFile.exists(); if (!fileExists) {

if(!mWeightLogFile.getParentFile().mkdirs()){

Toast.makeText(this, \"create file failed\ }

mWeightLogFile.createNewFile(); }

if (!mWeightLogFile.exists()) { Log.i(TAG, \"out = null\");

throw new Exception(\"creation of file '\"+mWeightLogFile.toString()+\"' failed\"); }

if (!mWeightLogFile.canWrite())

throw new Exception(\"file '\"+mWeightLogFile.toString()+\"' is not writable\"); out = new FileWriter(mWeightLogFile, true); if (!fileExists) {

String header = createHeadLine(); out.write(header); out.write('\\n'); } }

Log.i(TAG, \"out != null\");

String extras = createBatteryInfoLine(batteryChangeIntent); out.write(extras); out.write('\\n');

out.flush(); out.close(); return true;

} catch (Exception e) {

Log.e(TAG,e.getMessage(),e); return false; } }

因篇幅问题不能全部显示,请点此查看更多更全内容