在做工作时,我们经常需要遍历所有一个文件夹下的所有文件夹,发现其实也很简单。直接上代码
/*读取输入的某个文件夹中所有的txt文件 * 显示文件名、文件内容 * */ import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private EditText et_folder; //输入的文件夹名 private Button bt_open; //打开按钮 private Button bt_clear; //清除按钮 private EditText et_filename; //用于显示文件名 private EditText et_filecontent; //用于显示txt文件内容 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_folder = (EditText) findViewById(R.id.ET_Folder); et_filename = (EditText) findViewById(R.id.ET_FileName); et_filecontent = (EditText) findViewById(R.id.ET_FileContent); bt_open = (Button) findViewById(R.id.But_Open); bt_open.setOnClickListener(new OnClickListener(){//打开按钮监听 public void onClick(View arg0) { //若输入的文件夹名为空 if(et_folder.getText().toString().trim().equals("")){ Toast.makeText(getApplicationContext(), "输入为空",Toast.LENGTH_SHORT).show(); }else{ // 获得SD卡根目录路径 "/sdcard" File sdDir = Environment.getExternalStorageDirectory(); File path = new File(sdDir+File.separator +et_folder.getText().toString().trim()); // 判断SD卡是否存在,并且是否具有读写权限 if (Environment.getExternalStorageState(). equals(Environment.MEDIA_MOUNTED)) { File[] files = path.listFiles();// 读取文件夹下文件 et_filename.setText(""); et_filecontent.setText(""); et_filename.setText(getFileName(files)); et_filecontent.setText(getFileContent(files)); } } } }); bt_clear = (Button) findViewById(R.id.But_Clear); bt_clear.setOnClickListener(new OnClickListener(){//清除按钮监听 public void onClick(View arg0) { et_folder.setText(""); et_filename.setText(""); et_filecontent.setText(""); } }); } //读取指定目录下的所有TXT文件的文件内容 protected String getFileContent(File[] files) { String content = ""; if (files != null) { // 先判断目录是否为空,否则会报空指针 for (File file : files) { //检查此路径名的文件是否是一个目录(文件夹) if (file.isDirectory()) { Log.i("zeng", "若是文件目录。继续读1" + file.getName().toString()+ file.getPath().toString()); getFileContent(file.listFiles()); Log.i("zeng", "若是文件目录。继续读2" + file.getName().toString()+ file.getPath().toString()); } else { if (file.getName().endsWith(".txt")) {//格式为txt文件 try { InputStream instream = new FileInputStream(file); if (instream != null) { InputStreamReader inputreader = new InputStreamReader(instream, "GBK"); 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 ; } //读取指定目录下的所有TXT文件的文件名 private String getFileName(File[] files) { String str = ""; if (files != null) { // 先判断目录是否为空,否则会报空指针 for (File file : files) { if (file.isDirectory()){//检查此路径名的文件是否是一个目录(文件夹) Log.i("zeng", "若是文件目录。继续读1" +file.getName().toString()+file.getPath().toString()); getFileName(file.listFiles()); Log.i("zeng", "若是文件目录。继续读2" +file.getName().toString()+ file.getPath().toString()); } else { String fileName = file.getName(); if (fileName.endsWith(".txt")) { String s=fileName.substring(0,fileName.lastIndexOf(".")).toString(); Log.i("zeng", "文件名txt:: " + s); str += fileName.substring(0,fileName.lastIndexOf("."))+"\n"; } } } } return str; } }
注:1,这个代码是截取自网上的资料,主要是在在界面有个输入框,然后输入路径,判断sd卡根目录是否存在该文件,如果存在,就遍历文件夹下的文件。
2,主要是getFileName(File[] files) ,通过循环不断遍历文件夹,最后判断是否为.txt的文件,如果是,则显示在界面上。主要是file.listFiles())可以获取文件夹下的所有文件。
android 获取文件夹下的所有文件就讲完了。其实也很简单,如果大家想要知道更多文件的相关操作,可以自己在网上查找资料。