listview+baseadapter 读取sd卡中的目录 并修改文件保存文件

来源:互联网 发布:淘宝店需要办营业执照 编辑:程序博客网 时间:2024/05/16 19:04

我借鉴了 一个读取sd卡文件的fileutils 的类 并把它作为一个单例 对象

读取sd卡需要如下权限 

    <!-- SDCard中创建与删除文件权限 -->    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <!-- 向SDCard写入数据权限 -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如图


下面是Fileutils

package com.example.xiaoxiong;import java.io.BufferedReader;import java.io.File;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import android.os.Environment;public class FileUtils {private String SDCardRoot;    private String filename;    public File filedir;    private static FileUtils instance;    public static FileUtils getInstace(){    if(instance == null){    instance=  new FileUtils();    }    return instance;    }private  FileUtils() {SDCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath() + "/";System.out.println("SD dir:" + SDCardRoot);File dirFile = new File(SDCardRoot + "demo" + File.separator);System.out.println("creat dir:" + dirFile.mkdirs());filedir = dirFile;}public File createFileInSDCard(String fileName, String dir)throws IOException {File file = new File(SDCardRoot + dir + File.separator + fileName);file.createNewFile();return file;}   public  List<File> data= new ArrayList<File>();   public  List<File> getAllFiles(File dir,int level){   level++;   File[] files = dir.listFiles();   data.clear();   for(int i = 0; i < files.length; i++){//   if(files[i].isDirectory()){//   //这里用了递归//   getAllFiles(files[i],level);//   }else{//   data.add(files[i]);//   }   data.add(files[i]);   }   return data;   }public File createSDDir(String dir) {File dirFile = new File(SDCardRoot + dir + File.separator);System.out.println("creat dir:" + dirFile.mkdirs());filedir = dirFile;return dirFile;}public String readerFile( File name){     StringBuffer sb = new StringBuffer();  try {      BufferedReader br = new BufferedReader(new FileReader(name));      String readline = "";      while ((readline = br.readLine()) != null) {          sb.append(readline);      }      br.close();      System.out.println("读取成功:" + sb.toString());  } catch (Exception e) {      e.printStackTrace();      }return sb.toString(); }public void deleteFile(File name){if (name.exists()){name.delete();}}public boolean isFileExist(String fileName, String path) {File file = new File(SDCardRoot + path + File.separator + fileName);return file.exists();}public File write2SDFromString(String path, String fileName,String input) {File file = null;OutputStream output = null;try {createSDDir(path);file = createFileInSDCard(fileName, path);output = new FileOutputStream(file);//byte buffer[] = new byte[4 * 1024];//int temp;//while ((temp = input.read(buffer)) != -1) {//output.write(buffer, 0, temp);//}output.write(input.getBytes());output.flush();} catch (Exception e) {e.printStackTrace();} finally {try {output.close();} catch (Exception e) {e.printStackTrace();}}return file;}public File write2SDFromInput(String path, String fileName,InputStream input) {File file = null;OutputStream output = null;try {createSDDir(path);file = createFileInSDCard(fileName, path);output = new FileOutputStream(file);byte buffer[] = new byte[4 * 1024];int temp;while ((temp = input.read(buffer)) != -1) {output.write(buffer, 0, temp);}output.flush();} catch (Exception e) {e.printStackTrace();} finally {try {output.close();} catch (Exception e) {e.printStackTrace();}}return file;}}

MainActivity

package com.example.xiaoxiong;import java.io.File;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {    private ListView lv;    public TextListAdapter adapter ;    private static List<Map<String,Object>>data;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.text_layout);        lv = (ListView)findViewById(R.id.List_text);        //获取数据绑定到data中        data = getData();        adapter = new TextListAdapter(this, data);        lv.setAdapter(adapter);        lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {    Bundle bundle = new Bundle();    bundle.putString("NameText",((TextView)view.findViewById(R.id.text_name)).getText().toString() );    bundle.putString("content",((TextView)view.findViewById(R.id.text_info)).getText().toString() );        Intent intent =new Intent(MainActivity.this,TextActivity.class);        intent.putExtras(bundle);        startActivityForResult(intent,10);}});    }      @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(resultCode == 20){adapter.refresh(getData());Toast.makeText(this,"t", 3000).show();}}private   List<Map<String,Object>> getData(){        List<Map<String,Object>> list  = new ArrayList<Map<String, Object>>();    Map<String, Object> map;        FileUtils d = FileUtils.getInstace();//        File hh[]  = new File[10];//        if(d.filedir == null){//            hh[0] =  d.write2SDFromString("demo", "summer0", "i love you 0");//            hh[1] =  d.write2SDFromString("demo", "summer1", "i love you 1");//            hh[2] =  d.write2SDFromString("demo", "summer2", "i love you 2");//        }        List<File>data = new ArrayList<File>();        data = d.getAllFiles(d.filedir, 0);                for(int i=0;i<data.size();i++)         {             map = new HashMap<String, Object>();            map.put("title", data.get(i).getName());              map.put("info",d.readerFile(data.get(i)));            list.add(map);         }     return list;    }}

TextListAdapter

package com.example.xiaoxiong;import java.io.File;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {    private ListView lv;    public TextListAdapter adapter ;    private static List<Map<String,Object>>data;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.text_layout);        lv = (ListView)findViewById(R.id.List_text);        //获取数据绑定到data中        data = getData();        adapter = new TextListAdapter(this, data);        lv.setAdapter(adapter);        lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {    Bundle bundle = new Bundle();    bundle.putString("NameText",((TextView)view.findViewById(R.id.text_name)).getText().toString() );    bundle.putString("content",((TextView)view.findViewById(R.id.text_info)).getText().toString() );        Intent intent =new Intent(MainActivity.this,TextActivity.class);        intent.putExtras(bundle);        startActivityForResult(intent,10);}});    }      @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(resultCode == 20){adapter.refresh(getData());Toast.makeText(this,"t", 3000).show();}}private   List<Map<String,Object>> getData(){        List<Map<String,Object>> list  = new ArrayList<Map<String, Object>>();    Map<String, Object> map;        FileUtils d = FileUtils.getInstace();//        File hh[]  = new File[10];//        if(d.filedir == null){//            hh[0] =  d.write2SDFromString("demo", "summer0", "i love you 0");//            hh[1] =  d.write2SDFromString("demo", "summer1", "i love you 1");//            hh[2] =  d.write2SDFromString("demo", "summer2", "i love you 2");//        }        List<File>data = new ArrayList<File>();        data = d.getAllFiles(d.filedir, 0);                for(int i=0;i<data.size();i++)         {             map = new HashMap<String, Object>();            map.put("title", data.get(i).getName());              map.put("info",d.readerFile(data.get(i)));            list.add(map);         }     return list;    }}

TextActivity

package com.example.xiaoxiong;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class TextActivity extends Activity {private TextView txtname;private EditText txt;private Button sure,modify;    FileUtils d = FileUtils.getInstace();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.text_eg);Intent intent = getIntent();Bundle bundle = intent.getExtras();txtname = (TextView)findViewById(R.id.text_txt);txtname.setText(bundle.getString("NameText"));txt = (EditText)findViewById(R.id.editText1);txt.setText(bundle.getString("content"));sure = (Button)findViewById(R.id.button_sure);modify = (Button)findViewById(R.id.button_notify);sure.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {d.write2SDFromString("demo", txtname.getText().toString(), txt.getText().toString());setResult(20);finish();}});modify.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {}});}}



1 0
原创粉丝点击