android 获取文件夹下的所有文件
昨天,在做工作時(shí),需要遍歷所有一個(gè)文件夾下的所有文件夾,當(dāng)時(shí)自己也不知道怎么做,后來(lái)在網(wǎng)上搜索了一些資料,發(fā)現(xiàn)其實(shí)也很簡(jiǎn)單。
1.獲取SD是否可以讀寫,如果可以,則傳入文件的路徑
/*讀取輸入的某個(gè)文件夾中所有的txt文件
?* 顯示文件名、文件內(nèi)容
?* */
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;????//打開(kāi)按鈕
?private Button bt_clear;???//清除按鈕
?private EditText et_filename;??//用于顯示文件名
?private EditText et_filecontent;?//用于顯示txt文件內(nèi)容
?
?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(){//打開(kāi)按鈕監(jiān)聽(tīng)
???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卡是否存在,并且是否具有讀寫權(quán)限
?????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(){//清除按鈕監(jiān)聽(tīng)
???public void onClick(View arg0) {
????et_folder.setText("");
????et_filename.setText("");
???????????? et_filecontent.setText("");????
???}
??});
??
?}
?
?//讀取指定目錄下的所有TXT文件的文件內(nèi)容
?protected String getFileContent(File[] files) {
??String content? = "";
??if (files != null) {?// 先判斷目錄是否為空,否則會(huì)報(bào)空指針??
??????????? for (File file : files) {
??????????? ?? //檢查此路徑名的文件是否是一個(gè)目錄(文件夾)?
??????????????? if (file.isDirectory()) {
??????????????????? Log.i("zeng", "若是文件目錄。繼續(xù)讀1" +
??????????????????? file.getName().toString()+ file.getPath().toString());?
??????????????????? getFileContent(file.listFiles());?
??????????????????? Log.i("zeng", "若是文件目錄。繼續(xù)讀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) {?// 先判斷目錄是否為空,否則會(huì)報(bào)空指針??
??????????? for (File file : files) {?
??????????????? if (file.isDirectory()){//檢查此路徑名的文件是否是一個(gè)目錄(文件夾)
??????????????????? Log.i("zeng", "若是文件目錄。繼續(xù)讀1"
??????????????????? ?+file.getName().toString()+file.getPath().toString());?
??????????????????? getFileName(file.listFiles());?
??????????????????? Log.i("zeng", "若是文件目錄。繼續(xù)讀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;
??? }
?
}
這個(gè)代碼是截取自網(wǎng)上的資料,主要是在在界面有個(gè)輸入框,然后輸入路徑,判斷sd卡根目錄是否存在該文件,如果存在,就遍歷文件夾下的文件。
主要是getFileName(File[]?files)?,通過(guò)循環(huán)不斷遍歷文件夾,最后判斷是否為.txt的文件,如果是,則顯示在界面上。主要是file.listFiles())可以獲取文件夾下的所有文件。
android 獲取文件夾下的所有文件就講完了。其實(shí)也很簡(jiǎn)單,如果大家想要知道更多文件的相關(guān)操作,可以自己在網(wǎng)上查找資料。
就這么簡(jiǎn)單。
總結(jié)
以上是生活随笔為你收集整理的android 获取文件夹下的所有文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android studio trans
- 下一篇: android 判断网络是否可用