package com.edison.ex; import java.io.File; import java.util.ArrayList; import java.util.List; import android.content.Context; public class ListAllFiles { public Context mCon; public List<File> fileNameList; /***/ public ArrayList<String> fnList; public ListAllFiles(Context mCon) { this.mCon = mCon; } public void initFileList(String mPath) { File path = new File(mPath); File[] f = path.listFiles(); fill(f); } /** Returns an array of files contained in the directory */ public void initFileList(File mFile) { File[] f = mFile.listFiles(); fill(f); } public void fill(File[] files) { fileNameList = new ArrayList<File>(); for (File file : files) { if (isValidFileOrDir(file)) { fileNameList.add(file); } } System.out.println("fileNameList.size===" + fileNameList.size()); fileToStrArr(fileNameList); } /** 将文件夹或文件名字的名称保存到字符串数组当中. */ private String[] fileToStrArr(List<File> fl) { fnList = new ArrayList<String>(); for (int i = 0; i < fl.size(); i++) { String nameString = fl.get(i).getName(); fnList.add(nameString); } System.out.println("fnList.size===" + fnList.size()); return fnList.toArray(new String[0]); } /** 检查是否为合法的文件夹名和文件(文件是否为txt文件) */ private boolean isValidFileOrDir(File file) { if (file.isDirectory()) { return true; } else { String fileName = file.getName().toLowerCase(); if (fileName.endsWith(".txt")) { return true; } } return false; } }
package com.edison.ex; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TextView; public class ViewFile extends Activity { private String filenameString; private static final String gb2312 = "GB2312"; private static final String utf8 = "UTF-8"; private static final String defaultCode = gb2312; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.filebrowser); try { Bundle bunde = this.getIntent().getExtras(); filenameString = bunde.getString("fileName"); refreshGUI(defaultCode); } catch (Exception e) { } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = this.getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.gb2312: refreshGUI(defaultCode); break; case R.id.utf8: refreshGUI(utf8); break; } return super.onOptionsItemSelected(item); } private void refreshGUI(String code) { TextView tv = (TextView) findViewById(R.id.view_contents); String fileContent = getStringFromFile(code); tv.setText(fileContent); } public String getStringFromFile(String code) { try { StringBuffer sBuffer = new StringBuffer(); FileInputStream fInputStream = new FileInputStream(filenameString); InputStreamReader inputStreamReader = new InputStreamReader( fInputStream, code); BufferedReader in = new BufferedReader(inputStreamReader); if (!new File(filenameString).exists()) { return null; } while (in.ready()) { sBuffer.append(in.readLine() + "\n"); } in.close(); return sBuffer.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } // 读取文件内容 public byte[] readFile(String fileName) throws Exception { byte[] result = null; FileInputStream fis = null; try { File file = new File(fileName); fis = new FileInputStream(file); result = new byte[fis.available()]; fis.read(result); } catch (Exception e) { } finally { fis.close(); } return result; } }
package com.edison.ex; import java.io.File; import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; public class ReadTextActivity extends ListActivity { ListAllFiles mListAllFiles; ArrayAdapter<String> adapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mListAllFiles = new ListAllFiles(this); mListAllFiles.initFileList(android.os.Environment .getExternalStorageDirectory()); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListAllFiles.fnList); setListAdapter(adapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { Intent intent = new Intent(ReadTextActivity.this, ViewFile.class); Bundle bundle = new Bundle(); File file = mListAllFiles.fileNameList.get(position); if (file.isDirectory()) { File[] f = file.listFiles(); mListAllFiles.fill(f); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListAllFiles.fnList); setListAdapter(adapter); } else { bundle.putString("fileName", file.getAbsolutePath()); intent.putExtras(bundle); startActivityForResult(intent, 0); } } }