手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >android按行读取文件内容的几个方法
android按行读取文件内容的几个方法
摘要:一、简单版复制代码代码如下:importjava.io.FileInputStream;voidreadFileOnLine(){Strin...

一、简单版

复制代码 代码如下:

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", "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,逐行读取文件内容

复制代码 代码如下:

//首先定义一个数据类型,用于保存读取文件的内容

class WeightRecord {

String timestamp;

float weight;

public WeightRecord(String timestamp, float weight) {

this.timestamp = timestamp;

this.weight = weight;

}

}

//开始读取

private WeightRecord[] readLog() throws Exception {

ArrayList<WeightRecord> result = new ArrayList<WeightRecord>();

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", Toast.LENGTH_SHORT).show();

}

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;

}

}

【android按行读取文件内容的几个方法】相关文章:

android打开应用所在的市场页面进行评分操作的方法

paip.android 手机输入法制造方法

android 检测耳机是否插入方法

Android控件系列之EditText使用方法

Android软件开发环境搭建

Android在高jar包版本的工程中修改方法

Android 的Bitmap的修改方法

Android开发之SQLite的使用方法

提升Android ListView性能的几个技巧

Android定制RadioButton样式三种实现方法

精品推荐
分类导航