關於擷取Android中檔案內容有感

來源:互聯網
上載者:User

  今天研究Android中檔案夾的檔案的擷取,有的時候我們的程式需要去對android的指定目錄或者全域目錄進行遍曆擷取其中的檔案,但是擷取檔案的時候可能會遇到無法列出檔案夾中的檔案的問題,這就是我出現的問題,對於某個子檔案夾進行擷取listFiles()的時候返回為NULL,也就是不允許列出檔案夾中內容。這個是由於android中的安全機制的緣故,由於android繼承了Linux系統的傳統,對於某個特定的目錄有使用者的許可權,一共分為三種--可讀,可寫,可執行;雖然說我們可以設定某個特定的目錄的許可權,但是對於目錄裡面的子目錄和子檔案都可以進行許可權的設定,也就是說出了根目錄許可權之外,子目錄本身的許可權也決定了子目錄可否訪問,這一點我們需要清楚瞭解,所以我們在判斷完了是否是目錄之外,我們還需要在進行listFiles()擷取File[]資料後判斷擷取的數組是否為空白,如果為空白的話,檔案夾是不可訪問的。範例代碼如下:

    

package com.zys.file;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import android.util.Log;


/**
* @author
* function 用於掃描SD卡上的檔案
*
*/
public class FileScan {

private static final String TAG = "FileScan";

public HashMap<String, String> getMusicListOnSys(File file) {

//從根目錄開始掃描
Log.i(TAG, file.getPath());
HashMap<String, String> fileList = new HashMap<String, String>();
getFileList(file, fileList);
return fileList;
}

/**
* @param path
* @param fileList
* 注意的是並不是所有的檔案夾都可以進行讀取的,許可權問題
*/
private void getFileList(File path, HashMap<String, String> fileList){
//如果是檔案夾的話
if(path.isDirectory()){
//返迴文件夾中有的資料
File[] files = path.listFiles();
//先判斷下有沒有許可權,如果沒有許可權的話,就不執行了
if(null == files)
return;

for(int i = 0; i < files.length; i++){
getFileList(files[i], fileList);
}
}
//如果是檔案的話直接加入
else{
Log.i(TAG, path.getAbsolutePath());
//進行檔案的處理
String filePath = path.getAbsolutePath();
//檔案名稱
String fileName = filePath.substring(filePath.lastIndexOf("/")+1);
//添加
fileList.put(fileName, filePath);
}
}

}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.