android讀取目錄文件
1. android讀取指定目錄下音樂文件並顯示在xml中
java">mData=newArrayList<ChoseMusicBean>();
Filef=newFile(DEFAULT_SOUND_PATH);
File[]files=f.listFiles();
if(files!=null){
intcount=files.length;
for(inti=0;i<count;i++){
Filefile=files[i];
ChoseMusicBeanbean=newChoseMusicBean(file.getName());
mData.add(bean);
}
}
Adapteradapter=newadapter(context,mData);
listview.setAdapter(adapter);
DEFAULT_SOUND_PATH是音樂文件路徑
2. android如何讀取指定目錄的文件
這個還要看你是什麼文件,舉個例子獲取圖片文件。
Bitmap bitmap = BitmapFactory.decodeFile(android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+ "/data/abc/def/ghi.jkl")
Android中讀取assets文件夾裡面的文件,可使用SDK的API,需要用AssetManager以位元組流的形式讀取文件。
assets的讀取方式:
1. 先在Activity裡面調用getAssets() 來獲取AssetManager引用。
2. 再用AssetManager的open(String fileName, int accessMode) 方法則指定讀取的文件以及訪問模式就能得到輸入流InputStream。
3. 然後就是用已經open file 的inputStream讀取文件,讀取完成後記得inputStream.close() 。
4.調用AssetManager.close() 關閉AssetManager。
需要注意的是,來自Resources和Assets 中的文件只可以讀取而不能進行寫的操作。
4. android怎麼獲取應用的目錄
一、方法介紹:
每個Android應用程序都可以通過Context來獲取與應用程序相關的目錄,這些目錄的功能各異,每一個目錄都有自己的特點,有時候可能會搞混淆,本文結合android源碼注釋和實際操作,詳細介紹一下每個方法:
方法:getFilesDir
釋義:返回通過Context.openFileOutput()創建和存儲的文件系統的絕對路徑,應用程序文件,這些文件會在程序被卸載的時候全部刪掉。
方法:getCacheDir
釋義:返回應用程序指定的緩存目錄,這些文件在設備內存不足時會優先被刪除掉,所以存放在這里的文件是沒有任何保障的,可能會隨時丟掉。
方法:getDir
釋義:這是一個可以存放你自己應用程序自定義的文件,你可以通過該方法返回的File實例來創建或者訪問這個目錄,注意該目錄下的文件只有你自己的程序可以訪問。
方法:getExternalCacheDir
釋義:使用這個方法需要寫外部存儲的許可權「<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />」,調用該方法會返回應用程序的外部文件系統(Environment.getExternalStorageDirectory())目錄的絕對路徑,它是用來存放應用的緩存文件,它和getCacheDir目錄一樣,目錄下的文件都會在程序被卸載的時候被清除掉。
方法:getExternalFilesDir
釋義:使用這個方法需要寫外部存儲的許可權「<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />」,這個目錄是與應用程序相關的外部文件系統,它和getExternalCacheDir不一樣的是只要應用程序存在它就會一直存在,這些文件只屬於你的應用,不能被其它人訪問。同樣,這個目錄下的文件在程序被卸載時也會被一同刪除。
方法:getExternalFilesDir
釋義:和上面的方法一樣,只是返回的是其目錄下某一類型的文件,這些類型可以是: Environment#DIRECTORY_MUSIC 音樂 Environment#DIRECTORY_PODCASTS 音頻 Environment#DIRECTORY_RINGTONES 鈴聲 Environment#DIRECTORY_ALARMS 鬧鈴 Environment#DIRECTORY_NOTIFICATIONS 通知鈴聲 Environment#DIRECTORY_PICTURES 圖片 Environment#DIRECTORY_MOVIES 視頻
方法:getDatabasePath
釋義:保存通過Context.openOrCreateDatabase 創建的資料庫文件
方法:getPackageCodePath
釋義:返回android 安裝包的完整路徑,這個包是一個zip的壓縮文件,它包括應用程序的代碼和assets文件。
方法:getPackageResourcePath
釋義:返回android 安裝包的完整路徑,這個包是一個ZIP的要鎖文件,它包括應用程序的私有資源。
方法:getObbDir
釋義:返回應用程序的OBB文件目錄(如果有的話),注意如果該應用程序沒有任何OBB文件,這個目錄是不存在的。
二、測試程序:
測試代碼如下:
private StringBuilder getFilePath( ){
StringBuilder filePathBuilder = new StringBuilder( );
// 返回通過Context.openFileOutput()創建和存儲的文件系統的絕對路徑,應用程序文件,這些文件會在程序被卸載的時候全部刪掉。
filePathBuilder.append( "getFilesDir == " ).append( getFilesDir( ) ).append( "\n" );
// 返回應用程序指定的緩存目錄,這些文件在設備內存不足時會優先被刪除掉,所以存放在這里的文件是沒有任何保障的,可能會隨時丟掉。
filePathBuilder.append( "getCacheDir == " ).append( getCacheDir( ) ).append( "\n" );
// 這是一個可以存放你自己應用程序自定義的文件,你可以通過該方法返回的File實例來創建或者訪問這個目錄,注意該目錄下的文件只有你自己的程序可以訪問。
filePathBuilder.append( "getDir == " ).append( getDir("test.txt", Context.MODE_WORLD_WRITEABLE) ).append( "\n" );
/* 需要寫文件許可權 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> */
// 調用該方法會返回應用程序的外部文件系統(Environment.getExternalStorageDirectory())目錄的絕對路徑,它是用來存放應用的緩存文件,它和getCacheDir目錄一樣,目錄下的文件都會在程序被卸載的時候被清除掉。
filePathBuilder.append( "getExternalCacheDir == " ).append( getExternalCacheDir( ) ).append( "\n" );
// 這個目錄是與應用程序相關的外部文件系統,它和getExternalCacheDir不一樣的是只要應用程序存在它就會一直存在,這些文件只屬於你的應用,不能被其它人訪問。同樣,這個目錄下的文件在程序被卸載時也會被一同刪除。
filePathBuilder.append( "getExternalFilesDir == " ).append( getExternalFilesDir( "/" ) ).append( "\n" );
/**
* 和上面的方法一樣,只是返回的是其目錄下某一類型的文件,這些類型可以是:
* Environment#DIRECTORY_MUSIC 音樂
* Environment#DIRECTORY_PODCASTS 音頻
* Environment#DIRECTORY_RINGTONES 鈴聲
* Environment#DIRECTORY_ALARMS 鬧鈴
* Environment#DIRECTORY_NOTIFICATIONS 通知鈴聲
* Environment#DIRECTORY_PICTURES 圖片
* Environment#DIRECTORY_MOVIES 視頻
*
* */
filePathBuilder.append( "getExternalFilesDir == " ).append( getExternalFilesDir( Environment.DIRECTORY_PICTURES ) ).append( "\n" );
// 保存通過Context.openOrCreateDatabase 創建的資料庫文件
filePathBuilder.append( "getDatabasePath == " ).append( getDatabasePath( DATA_BASE_NAME ) ).append( "\n" );
// 返回android 安裝包的完整路徑,這個包是一個zip的壓縮文件,它包括應用程序的代碼和assets文件
filePathBuilder.append( "getPackageCodePath == " ).append( getPackageCodePath( ) ).append( "\n" );
// 返回android 安裝包的完整路徑,這個包是一個ZIP的要鎖文件,它包括應用程序的私有資源。
filePathBuilder.append( "getPackageResourcePath == " ).append( getPackageResourcePath( ) ).append( "\n" );
// 返回應用程序的OBB文件目錄(如果有的話),注意如果該應用程序沒有任何OBB文件,這個目錄是不存在的。
filePathBuilder.append( "getObbDir == " ).append( getObbDir( ) ).append( "\n" );
return filePathBuilder;
}
5. Android 怎麼讀取指定目錄下的音樂文件
ContentResolver mResolver = getContentResolver();
Cursor cursor = mResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
int i = 0;
int cursorCount = cursor.getCount();
if (cursorCount >0 )
{
cursor.moveToFirst();
while (i < cursorCount)
{
//歌曲文件的路徑 :MediaStore.Audio.Media.DATA
url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
if(url.toLowerCase().indexOf("指定的歌曲路徑") > 0)
{
......
}
i++;
cursor.moveToNext();
}
cursor.close();
}
6. android中怎麼獲取指定目錄下的文件夾
參考如下代碼:
package com.Aina.Android;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class Test_ListFile extends ListActivity {
/** Called when the activity is first created. */
private List<String> items = null;//存放名稱
private List<String> paths = null;//存放路徑
private String rootPath = "/";
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) this.findViewById(R.id.TextView);
this.getFileDir(rootPath);//獲取rootPath目錄下的文件.
}
public void getFileDir(String filePath) {
try{
this.tv.setText("當前路徑:"+filePath);// 設置當前所在路徑
items = new ArrayList<String>();
paths = new ArrayList<String>();
File f = new File(filePath);
File[] files = f.listFiles();// 列出所有文件
// 如果不是根目錄,則列出返回根目錄和上一目錄選項
if (!filePath.equals(rootPath)) {
items.add("返回根目錄");
paths.add(rootPath);
items.add("返回上一層目錄");
paths.add(f.getParent());
}
// 將所有文件存入list中
if(files != null){
int count = files.length;// 文件個數
for (int i = 0; i < count; i++) {
File file = files[i];
items.add(file.getName());
paths.add(file.getPath());
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, items);
this.setListAdapter(adapter);
}catch(Exception ex){
ex.printStackTrace();
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String path = paths.get(position);
File file = new File(path);
//如果是文件夾就繼續分解
if(file.isDirectory()){
this.getFileDir(path);
}else{
new AlertDialog.Builder(this).setTitle("提示").setMessage(file.getName()+" 是一個文件!").setPositiveButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
}
}).show();
}
}
}
7. android開發怎樣獲得文件夾中的所有文件
有的時候程序需要去對android的指定目錄或者全局目錄進行遍歷獲取其中的文件,但是獲取文件的時候可能會遇到無法列出文件夾中的文件的問題,這就是出現的問題,對於某個子文件夾進行獲取listFiles()的時候返回為NULL,也就是不允許列出文件夾中內容。
這個是由於android中的安全機制的緣故,由於android繼承了Linux系統的傳統,對於某個特定的目錄有用戶的許可權,一共分為三種--可讀,可寫,可執行;雖然說可以設置某個特定的目錄的許可權,但是對於目錄裡面的子目錄和子文件都可以進行許可權的設置,也就是說出了根目錄許可權之外,子目錄本身的許可權也決定了子目錄可否訪問,這一點需要清楚了解,所以在判斷完了是否是目錄之外,還需要在進行listFiles()獲取File[]數據後判斷獲取的數組是否為空,如果為空的話,文件夾是不可訪問的。樣例代碼如下:
01 package net.nowamagic.file;
02 import java.io.File;
03 import java.util.ArrayList;
04 import java.util.HashMap;
05 import java.util.Map;
06 import android.util.Log;
07 /**
08 * @author
09 * function 用於掃描SD卡上的文件
10 *
11 */
12 public class FileScan {
13
14 private static final String TAG = "FileScan";
15 public HashMap<String, String> getMusicListOnSys(File file) {
16
17 //從根目錄開始掃描
18 Log.i(TAG, file.getPath());
19 HashMap<String, String> fileList = new HashMap<String, String>();
20 getFileList(file, fileList);
21 return fileList;
22 }
23
24 /**
25 * @param path
26 * @param fileList
27 * 注意的是並不是所有的文件夾都可以進行讀取的,許可權問題
28 */
29 private void getFileList(File path, HashMap<String, String> fileList){
30 //如果是文件夾的話
31 if(path.isDirectory()){
32 //返迴文件夾中有的數據
33 File[] files = path.listFiles();
34 //先判斷下有沒有許可權,如果沒有許可權的話,就不執行了
35 if(null == files)
36 return;
37
38 for(int i = 0; i < files.length; i++){
39 getFileList(files[i], fileList);
40 }
41 }
42 //如果是文件的話直接加入
43 else{
44 Log.i(TAG, path.getAbsolutePath());
45 //進行文件的處理
46 String filePath = path.getAbsolutePath();
47 //文件名
48 String fileName = filePath.substring(filePath.lastIndexOf("/")+1);
49 //添加
50 fileList.put(fileName, filePath);
51 }
52 }
53
54 }
出處:http://www.nowamagic.net/librarys/veda/detail/1481
8. android 讀取data目錄文件的問題
/**
* 存儲文件
* @param context 設備上下文
* @param btimap 點陣圖
* @param bitmapName 點陣圖名稱
* @return
*/
@SuppressLint("WorldWriteableFiles")
@SuppressWarnings("deprecation")
private static boolean saveBitmap( Context context , Bitmap btimap , String bitmapName ) {
try {
FileOutputStream fOut = context.openFileOutput( bitmapName, Context.MODE_WORLD_WRITEABLE|Context.MODE_WORLD_READABLE );
btimap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
以上代碼僅供參考。
通過以上代碼可以在data文件夾下的應用的包名文件夾下新建文件。
希望能夠幫到你
9. 如何訪問android的asset目錄和res目錄下的文件
//從resources中的raw 文件夾中獲取文件並讀取數據
public String getFromRaw(){
String result = "";
try {
InputStream in = getResources().openRawResource(R.raw.test1);
//獲取文件的位元組數
int lenght = in.available();
//創建byte數組
byte[] buffer = new byte[lenght];
//將文件中的數據讀到byte數組中
in.read(buffer);
result = EncodingUtils.getString(buffer, ENCODING);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
//從assets 文件夾中獲取文件並讀取數據
public String getFromAssets(String fileName){
String result = "";
try {
InputStream in = getResources().getAssets().open(fileName);
//獲取文件的位元組數
int lenght = in.available();
//創建byte數組
byte[] buffer = new byte[lenght];
//將文件中的數據讀到byte數組中
in.read(buffer);
result = EncodingUtils.getString(buffer, ENCODING);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
來的,大概就是找到文件路徑轉成流,然後再讀取出來轉成字元串!