簡體   English   中英

如何從Android中的SD卡獲取文件路徑

[英]How to get filepath from sdcard in android

當我單擊按鈕時,我想從filename獲取filename filepath 我正在使用自定義BaseAdapter來傳遞ArrayList<String> 我正在獲取文件名,但我也需要來自sdcard的絕對文件路徑。 這是我在getView()中的代碼;

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

在按鈕的onclick中,當我單擊同一行的按鈕時,我在下面的代碼段中添加了一個文件

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

從這個如何獲取文件路徑?

完整的代碼

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

        }

謝謝

你可以嘗試這樣的事情

Environment.getExternalStorageDirectory()。getAbsolutePath();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM