如何获得在Android的内部和外部SD卡路径

如何获得在Android的内部和外部SD卡路径,第1张

首先我要说的是,你的三星手机,和小米手机,不能写为//sdcard//这个系统重新封装了,不能用简写。String mPath = EnvironmentgetExternalStorageDirectory()toString();获得路径字符串。至于其他参数的,都是辅助

/

获取手机自身内存路径

/

public static String getPhoneCardPath(){

return EnvironmentgetDataDirectory()getPath();

}

/

获取sd卡路径

双sd卡时,根据”设置“里面的数据存储位置选择,获得的是内置sd卡或外置sd卡

@return

/

public static String getNormalSDCardPath(){

return EnvironmentgetExternalStorageDirectory()getPath();

}

/

获取sd卡路径

双sd卡时,获得的是外置sd卡

@return

/

public static String getSDCardPath() {

String cmd = "cat /proc/mounts";

Runtime run = RuntimegetRuntime();// 返回与当前 Java 应用程序相关的运行时对象

BufferedInputStream in=null;

BufferedReader inBr=null;

try {

Process p = runexec(cmd);// 启动另一个进程来执行命令

in = new BufferedInputStream(pgetInputStream());

inBr = new BufferedReader(new InputStreamReader(in));

String lineStr;

while ((lineStr = inBrreadLine()) != null) {

// 获得命令执行后在控制台的输出信息

Logi("CommonUtil:getSDCardPath", lineStr);

if (lineStrcontains("sdcard")

&& lineStrcontains("android_secure")) {

String[] strArray = lineStrsplit(" ");

if (strArray != null && strArraylength >= 5) {

String result = strArray[1]replace("/android_secure",

"");

return result;

}

}

// 检查命令是否执行失败。

if (pwaitFor() != 0 && pexitValue() == 1) {

// pexitValue()==0表示正常结束,1:非正常结束

Loge("CommonUtil:getSDCardPath", "命令执行失败!");

}

}

} catch (Exception e) {

Loge("CommonUtil:getSDCardPath", etoString());

//return EnvironmentgetExternalStorageDirectory()getPath();

}finally{

try {

if(in!=null){

inclose();

}

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

try {

if(inBr!=null){

inBrclose();

}

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

return EnvironmentgetExternalStorageDirectory()getPath();

}

//查看所有的sd路径

public String getSDCardPathEx(){

String mount = new String();

try {

Runtime runtime = RuntimegetRuntime();

Process proc = runtimeexec("mount");

InputStream is = procgetInputStream();

InputStreamReader isr = new InputStreamReader(is);

String line;

BufferedReader br = new BufferedReader(isr);

while ((line = brreadLine()) != null) {

if (linecontains("secure")) continue;

if (linecontains("asec")) continue;

if (linecontains("fat")) {

String columns[] = linesplit(" ");

if (columns != null && columnslength > 1) {

mount = mountconcat("" + columns[1] + "\n");

}

} else if (linecontains("fuse")) {

String columns[] = linesplit(" ");

if (columns != null && columnslength > 1) {

mount = mountconcat(columns[1] + "\n");

}

}

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

return mount;

}

//获取当前路径,可用空间

public static long getAvailableSize(String path){

try{

File base = new File(path);

StatFs stat = new StatFs(basegetPath());

long nAvailableCount = statgetBlockSize() ((long) statgetAvailableBlocks());

return nAvailableCount;

}catch(Exception e){

eprintStackTrace();

}

return 0;

}

一、在Android应用中的XML文件来源

1、本地xml文件

本地XML文件可以放在应用根目录assets文件夹、res/xml、res/raw、SDcard卡、应用的data目录等;

除res/xml可直接通过getXml(int id)获取XML文档,返回一个解析器对象(XmlResourceParer:XmlResourceParer是XmlPullParser的子类),其它位置情况都可以获取XML文档,返回一个Inputstream对象,进行读取数据,获取方法分别如下:

a在res/xml目录下(推荐使用):

[java] view plaincopy

XmlResourceParser xmlParser = thisgetResources()getXml(RxmlXXX);

b在res/xml、res/raw目录下:

[java] view plaincopy

InputStream inputStream = thisgetResources()openRawResource(RxmlXXX);

c在assets文件夹下(本人测试发现通过此方法获取的XML文档不能带有首行:<xml version="10" encoding="utf-8">,否则解析报错,具体原因未查明,知道原因请回复交流):

[java] view plaincopy

InputStream inputStream = getResources()getAssets()open(fileName);

d在应用指定目录下(SDcard,应用data目录等):

[java] view plaincopy

// path路径根据实际项目修改,此次获取SDcard根目录

String path = EnvironmentgetExternalStorageDirectory()toString();

File xmlFlie = new File(path+fileName);

InputStream inputStream = new FileInputStream(xmlFlie);

2、通过url得到的xml文件

很多时候需要解析xml文件都用于客户端与服务器之间的数据交互,比如解析google天气预报信息,或自己项目内定的一些XML数据结构,其中通过URL,使用Default>

Android SDK提供了大量的接口获取存储器路径,而存储器分为 内置存储器 和 外置存储器 ,下面分类列表获取路径的接口。

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

简单分析:

以下是我整理的工具类

1、鼠标右击文件,在d出的菜单选择“File Path”;

2、在d出的小窗口从下往上读就是当前文件的电脑路径,单击最上面的文件就可以打开文件所在位置;

文件在电脑的路径是:D:\MyApplication\appTest\src\main\java\com\example\mytest

这个还要看你是什么文件,举个例子获取文件。

Bitmap bitmap = BitmapFactorydecodeFile(androidosEnvironmentgetExternalStorageDirectory()getAbsolutePath()+ "/data/abc/def/ghijkl")

以上就是关于如何获得在Android的内部和外部SD卡路径全部的内容,包括:如何获得在Android的内部和外部SD卡路径、如何正确获得Android内外SD卡路径、新手使用android的XML(DOM)解析问题,指定路径XML如何读取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9605030.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存