简体   繁体   English

如何从Android中的SD卡获取文件路径

[英]How to get filepath from sdcard in android

When I clicked on button I want to get a filepath from a filename . 当我单击按钮时,我想从filename获取filename filepath I am using custom BaseAdapter for that I am passing ArrayList<String> . 我正在使用自定义BaseAdapter来传递ArrayList<String> I am getting file name but also i need absolute filepath from sdcard. 我正在获取文件名,但我也需要来自sdcard的绝对文件路径。 Here is my code in getView(); 这是我在getView()中的代码;

String mFileName = myitem.get(position);            
viewHolder.bt_encrypt.setTag(mFileName);    

In onclick of button I added below piece of code to get a file when i clicked on button of same row 在按钮的onclick中,当我单击同一行的按钮时,我在下面的代码段中添加了一个文件

 String fileName = (String) v.getTag(); 

From this how to get filepath ? 从这个如何获取文件路径?

full code 完整的代码

private void getDir(String dirPath){

 item = new ArrayList<String>();
 path = new ArrayList<String>();
 File f = new File(dirPath);
 File[] files = f.listFiles();

 if(!dirPath.equals(MainActivity.root_sd_path)){
   item.add(MainActivity.root_sd_path);
   path.add(MainActivity.root_sd_path);
   item.add("../");
   path.add(f.getParent()); 
 }

 for(int i=0; i < files.length; i++)
 {
    File file = files[i];
    if(!file.isHidden() && file.canRead()){
        path.add(file.getAbsolutePath());
        if(file.isDirectory()){
            item.add(file.getName() + "/");
        }else{
            item.add(file.getName());
        }
     }  
  }

  SDcardFiles sdcardFilesAdapter = new SDcardFiles(item, dirPath);
  setListAdapter(sdcardFilesAdapter);       

}

public class SDcardFiles extends BaseAdapter{

   private LayoutInflater mInflator;
   String myfilename;
   ArrayList<String> myitem;
   File sdFile;
   private String mFileName;    

  public SDcardFiles(ArrayList<String> fileItem, String fileDirpath){

   myitem = new ArrayList<String>();    
   myitem = fileItem;
   mInflator = MyFiles.this.getLayoutInflater();

   @Override
   public int getCount() {

    return myitem.size();
    }

    @Override
    public Object getItem(int position) {
    // TODO Auto-generated method stub
    return myitem.get(position);
     }

   @Override
   public long getItemId(int position) {
            return position;
    }

   @Override
   public View getView(int position, View view, ViewGroup parent) {

    ViewHolder viewHolder;

    if (view == null) {

        view = mInflator.inflate(R.layout.myfiles_sdfiles, null);
        viewHolder = new ViewHolder();
        viewHolder.fileName = (TextView)view.findViewById(R.id.file_name);
        viewHolder.bt_encrypt = (Button)view.findViewById(R.id.encrypt);                
        view.setTag(viewHolder);                            
    } else {

               viewHolder = (ViewHolder) view.getTag();
           }


    mFileName = myitem.get(position);           
    viewHolder.bt_encrypt.setTag(mFileName);    

    String myFileName = mFileName;  

    System.out.println("mFile====>"+myFileName);

    if(myFileName != null && myFileName.length() > 0){

        viewHolder.fileName.setText(myFileName.toString());

    }            

    viewHolder.bt_encrypt.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            String fileName =  (String) v.getTag();                 
            System.out.println("inside encryption====>"+fileName);  

                         // Here I need filepath also

        }

THANKS 谢谢

you can try something like this 你可以尝试这样的事情

Environment.getExternalStorageDirectory().getAbsolutePath(); Environment.getExternalStorageDirectory()。getAbsolutePath();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM