当前位置:首页 » 安卓系统 » android获取目录

android获取目录

发布时间: 2022-06-04 23:15:47

⑴ 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;
}

⑵ 获取android手机的自带存储路径和sdcard存储路径

android手机获取自带存储路径和sd卡存储路径的方式是:

调用Environment.getExternalStorageDirectory,返回的存储目录并不是系统内置的SD卡目录。


1、手机将eMC存储挂载到 /mnt/external_sd 、/mnt/sdcard2 等节点,而将外置的SD卡挂载到 Environment.getExternalStorgeDirectory这个结点。

(2)android获取目录扩展阅读:

Android在正式发行之前,最开始拥有两个内部测试版本,并且以着名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android 1.0)。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。

Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux内核层。

⑶ android 如何获取系统内置的存储空间路径

自己创建一个文件(一个工具类),设置它的路径
下面是一段检查SDCard有没有这个文件夹没有就创建一个if(checkSDCard())
{
filePath
=
Environment.getExternalStorageDirectory()+File.separator+"aishop";
}else{
filePath
=
context.getCacheDir().getAbsolutePath()+File.separator+"aishop";
}路径自己设置就可以了

⑷ android怎么获取分区路径

我们可以在adb中使用df 来查看分区情况。

1、跨分区不能用 MV命令来拷贝。但是可以用CP命令。如PWD,当前目录为:/data/local/tmp 。

此目录下有个busybox和1.txt文件。则利用CP命令拷贝如下:./busybox cp1.txt /system.

2、Android的用户组有 System, root, shell

3、怎么样才能操作分区。

分区操作是需要权限的。一般来说System分区的权限限制得比较严,Data分区限制比较严,用户可以操作的目录有local,app目录。比如/data/local/tmp.

data分区常用目录:app , system , data ,local,misc 其中system,local可以进入并使用ls等命令。data,app可以进入,但不能用ls命令。

data/data目录:存放的是所有APK程序数据的目录,每个APK对就一个自己的Data目录,就是在data/data/目录下,会产生一个跟Package一样的目录。如有一个APK,它的包名叫com.test.hello则,在data/data/目录下会有一个com.test.hello的目录,这个APK只能操作此目录,不能操作其它APK的目录.这个在LINUX下叫做用户进程只能操作自己的进程目录.

data/app目录:用户安装的APK放在这里。我们如果把APK放入这个文件夹下面的话,就算安装好了。这就叫静默安装。不用管APK文件里面的lib目录下的库文件,系统会自动帮我们放入调用库的。

data/system目录下面有packages.xml ,packages.list,appwidgets.xml, 等等一些记录手机安装的软件,Widget等信息。

data/misc目录:保存WIFI帐号,VPN设置信息等。如保存了一个WIFI连接帐号,则此目录下的WIFI目录下面可以查看到。

system分区常用目录: app , lib, xbin, bin , media,framework.

system/app目录:存放系统自带的APK。没有测试过是否将APK放入到System/app目录下,也是静默安装APK。?

system/lib目录:存放APK程序用到的库文件。

system/bin目录和system/xbin目录:存放的是shell命令。

system/framework目录:启用Android系统所用到框架,如一些jar文件。

4 Android下面的目录都是有权限的,要操作目录都需要有此权限才能操作,如果没有,则使用chomd777来修改.如果是分区根目录,如/data分区, /system分区.都没有权限,则需要重新挂载. 使用 mount -oremount XX

⑸ 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();
}
}

}

⑹ 各类Android手机的根目录如何获取

可以使用Android原生的的类Environment.getExternalStorageDirectory()来获取,一般用“/sdcard/”是可以获取大部分的手机内存的根目录,但是现在好像陆续的不推荐这样去做,而是用Android原生的方法。有一个前提是你必须加入读写权限才可以进行此操作,否则无效
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
记得在清单文件中加上

⑺ Android:怎么获取当前文件(类)所在的目录的完整路径

android的硬存储是按照linux系统规则来划分的,用于存储客户信息和客户安装的应用的是/data分区,你如果使用的是c程序的话,应该是在/data/app之类的下面,我手头没有板子没法给你查。文件夹是google约定俗成的,不同厂家应该都是一样的路径。如果是厂家定制的应用则是在/system分区下,路径应该是/system/app下。

如果你是一个android系统学习者,而不是应用开发者的话,我建议看看以下system/etc/initrc对于你会有很大的帮助。

⑻ android怎样拿到file的路径

Environment 常用方法:
* 方法:getDataDirectory()
解释:返回 File ,获取 Android
数据目录。
* 方法:getDownloadCacheDirectory()
解释:返回 File ,获取 Android
下载/缓存内容目录。
* 方法:getExternalStorageDirectory()
解释:返回 File ,获取外部存储目录即
SDCard
* 方法:(String type)
解释:返回 File
,取一个高端的公用的外部存储器目录来摆放某些类型的文件
* 方法:getExternalStorageState()
解释:返回 File
,获取外部存储设备的当前状态
* 方法:getRootDirectory()

解释:返回 File ,获取 Android 的根目录

file的getPath getAbsolutePath和getCanonicalPath的不同

File的这三个方法在api中都有说明,仅以程序为例说明。

package test;

import
java.io.File;
import java.io.IOException;

public class TestFilePath
{

public static void main(String[] args) {
// TODO Auto-generated
methodstub

System.out.println(System.getProperty("user.dir"));

try
{
System.out.println("-----默认相对路径:取得路径不同------");
File file1 =new
File("..\\src\\test1.txt");
System.out.println(file1.getPath());
System.out.println(file1.getAbsolutePath());
System.out.println(file1.getCanonicalPath());
System.out.println("-----默认相对路径:取得路径不同------");
File
file =new
File(".\\test1.txt");
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.getCanonicalPath());

System.out.println("-----默认绝对路径:取得路径相同------");
File
file2 =new
File("D:\\workspace\\test\\test1.txt");
System.out.println(file2.getPath());
System.out.println(file2.getAbsolutePath());
System.out.println(file2.getCanonicalPath());
}
catch (IOException e) {
// TODOAuto-generated catch
block
e.printStackTrace();
}
}

}

程序执行结果如下:

F:\eclipseworkspace\testejb
-----默认相对路径:取得路径不同------
..\src\test1.txt
F:\eclipseworkspace\testejb\..\src\test1.txt
F:\eclipseworkspace\src\test1.txt
-----默认相对路径:取得路径不同------
.\test1.txt
F:\eclipseworkspace\testejb\.\test1.txt
F:\eclipseworkspace\testejb\test1.txt
-----默认绝对路径:取得路径相同------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
结论:

当输入为绝对路径时,返回的都是绝对路径。

当输入为相对路径时:

getPath()返回的是File构造方法里的路径,是什么就是什么,不增不减

getAbsolutePath()返回的其实是user.dir+getPath()的内容,从上面F:\eclipseworkspace\testejb、F:\eclipseworkspace\testejb\..\src\test1.txt、F:\eclipseworkspace\testejb\.\test1.txt可以得出。
getCanonicalPath()返回的就是标准的将符号完全解析的路径

public String
getAbsolutePath()返回抽象路径名的绝对路径名字符串。
如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath()
方法一样。如果此抽象路径名是空的抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir
指定。否则,使用与系统有关的方式分析此路径名。在 UNIX 系统上,通过根据当前用户目录分析某一相对路径名,可使该路径名成为绝对路径名。在 Microsoft
Windows
系统上,通过由路径名指定的当前驱动器目录(如果有)来分析某一相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录来分析它。

返回:
绝对路径名字符串,它与此抽象路径名表示相同的文件或目录的
抛出:
SecurityException
- 如果无法访问所需的系统属性值。
另请参见:
isAbsolute()

public String getCanonicalPath()
throws
IOException返回抽象路径名的规范路径名字符串。
规范路径名是绝对路径名,并且是惟一的。规范路径名的准确定义与系统有关。如有必要,此方法首先将路径名转换成绝对路径名,这与调用
getAbsolutePath() 方法的效果一样,然后用与系统相关的方式将它映射到其惟一路径名。这通常涉及到从路径名中移除多余的名称(比如 "." 和
"..")、分析符号连接(对于 UNIX 平台),以及将驱动器名转换成标准大小写形式(对于 Microsoft Windows
平台)。

表示现有文件或目录的每个路径名都有一个惟一的规范形式。表示非存在文件或目录的每个路径名也有一个惟一的规范形式。非存在文件或目录路径名的规范形式可能不同于创建文件或目录之后同一路径名的规范形式。同样,现有文件或目录路径名的规范形式可能不同于删除文件或目录之后同一路径名的规范形式。

返回:
表示与此抽象路径名相同的文件或目录的规范路径名字符串
抛出:
IOException
- 如果发生 I/O 错误(可能是因为构造规范路径名需要进行文件系统查询)
SecurityException -
如果无法访问所需的系统属性值,或者存在安全管理器,且其 SecurityManager.checkRead(java.io.FileDescriptor)
方法拒绝对该文件进行读取访问
从以下版本开始:
JDK1.1

⑼ android 已知文件名,怎么取得目录

获得目录 = getFilePathByName(已经知道的文件名,根目录);

/**
*
* @param seekFileName 需要查找的File名
* @param rootFile 在哪里查找的目录
* @return 查找文件的全路径
*/
private String getFilePathByName(String seekFileName,File rootFile){
List<File> files=parseFiles(rootFile);
for (File file:files){
if(file.getName().equals(seekFileName)){
return file.getAbsolutePath();
}
}
return null;
}

private List<File> parseFiles(File file){
List<File> listFiles=new ArrayList<>();
File[] files = file.listFiles();
for (File mf:files){
if(mf.isDirectory()){
listFiles.addAll(parseFiles(mf));
}else{
listFiles.add(mf);
}

}
return listFiles;
}

热点内容
求阶乘的c语言 发布:2025-05-19 21:15:20 浏览:963
话唠安卓哪里下载 发布:2025-05-19 20:27:04 浏览:165
疯狂android讲义光盘 发布:2025-05-19 20:12:31 浏览:153
安卓手机怎么下载圈点 发布:2025-05-19 20:08:11 浏览:473
文件夹粉碎不了 发布:2025-05-19 20:05:41 浏览:249
安卓怎么把软件放进全局 发布:2025-05-19 20:03:55 浏览:688
安卓手机如何看最真实的型号 发布:2025-05-19 19:58:59 浏览:12
U盘超级加密2008 发布:2025-05-19 19:44:32 浏览:457
灯带编程软件 发布:2025-05-19 19:32:30 浏览:288
如何判断服务器被多少人访问 发布:2025-05-19 19:27:45 浏览:126