zoukankan      html  css  js  c++  java
  • Android 读取手机某个文件夹目录及子文件夹中所有的txt文件

    1. activity_main.xml文件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:android1="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <LinearLayout
    	    android:orientation="horizontal"
    	    android:layout_width="fill_parent"
    	    android:layout_height="wrap_content" >
    	    <TextView  
    		    android:textSize="18dip"
    		    android:layout_width="wrap_content" 
    		    android:layout_height="wrap_content" 
    		    android:text="文件名" />
    	    <EditText 
    		    android:hint="foldername"
    		    android:id="@+id/ET_Folder" 
    		    android:layout_width="140dip" 
    		    android:layout_height="wrap_content" />
    	   <Button 
    		     android:text="打开" 
    		     android:id="@+id/But_Open" 
    		     android:layout_width="wrap_content"                                                        
    		     android:layout_height="wrap_content" />
    	   <Button 
    		     android:text="清除" 
    		     android:id="@+id/But_Clear" 
    		     android:layout_width="wrap_content"                                                        
    		     android:layout_height="wrap_content" />
    	</LinearLayout>
       
        <EditText
            android1:id="@+id/ET_FileName"
            android1:layout_width="match_parent"
            android1:layout_height="wrap_content"
            android1:ems="10" >
        </EditText>
        
        <ScrollView 
    		android:id="@+id/ScrollView01" 
    		android:layout_width="fill_parent" 
    		android:layout_height="wrap_content">
    		<EditText 
    			android:editable="false"
    			android:id="@+id/ET_FileContent" 
    			android:layout_width="fill_parent" 
    			android:layout_height="wrap_content" />
       </ScrollView>
        
    </LinearLayout>

    2. MainActivity.java文件

    /*读取输入的某个文件夹中所有的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 + "
    ";
                                    }                
                                    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("."))+"
    ";
                        }  
                    }  
                } 
                
            }
            return str;
        } 
    	
    }



  • 相关阅读:
    软件包管理
    扩大swap分区
    逻辑卷加密(luks)
    创建一个独立的卷组
    dns视图搭建
    dns服务搭建
    [转]ubuntu错误解决E: Sub-process /usr/bin/dpkg returned an error code (1)
    [转]ubuntu server上网配置
    [转]windows 软链接的建立及删除
    [转]Cygwin的包管理器:apt-cyg
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171539.html
Copyright © 2011-2022 走看看