Android读取txt文件,首先要想好读取哪个地方的txt文件,可供选择的有SD卡上的txt文件,还有开发中的txt文件。前者明显要复杂许多,添加权限,寻找文件位置,将文件以流的形式读取出来等等。而后者只需要将文件的位置找到即可。
我们这里重点讲讲前者,后者会一笔带过。
现在我们要讲讲通用步骤:
public static String getString(InputStream inputStream){
InputStreamReader inputStreamReader = null;
inputStreamReader = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(inputStreamReader);
StringBuffer sb = new StringBuffer();
String line;
try {
while((line=reader.readLine())!=null){
sb.append(line+"\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
以上代码是为了将inputStream转化成我们要得到的txt文件中真正的内容。这里之所以使用InputStreamReader是因为它是字节流通向字符流的桥梁。
InputStream
的作用是标志那些从不同数据起源产生输入的类。这些数据起源包括(每个都有一个相关的InputStream子类):
(1) 字节说组
(2) String对象
(3) 文件
(4) “管道”,它的工作原理与现实生活中的管道类似:将一些东西一端置入,它们在另一端输出。
(5) 一个由其他种类的流组成的序列,以便我们将其统一收集合并到一个流内。
(6) 其他数据集,如Internet连接等。
而显然我们需要读取的txt文件属于文件类型的,所以我们使用FileInputStream类,既然用到了FileInputStream那么我们就得考虑用File,而这个File的路径就得考虑两种方案了
我们这里主要讨论SD卡上的方案。代码如下
package com.read.txt;
import java.io.File;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;
import com.read.txt.FileChooserAdapter.FileInfo;
import com.readtxt.R;
public class FileChooserActivity extends Activity {
private GridView mGridView;
private View mBackView;
private View mBtExit;
private TextView mTvPath ;
private String mSdcardRootPath ; //sdcard 根路径
private String mLastFilePath ; //当前显示的路径
private ArrayList<FileInfo> mFileLists ;
private FileChooserAdapter mAdatper ;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.filechooser_show);
mSdcardRootPath = Environment.getExternalStorageDirectory().getAbsolutePath();
mBackView = find