xamarin怎样获取android外卡路径

xamarin怎样获取android外卡路径,第1张

xamarin怎样获取android外卡路径

一部分手机将eMMC存储挂载到 /mnt/external_sd 、/mnt/sdcard2 等节点,而将外置的SD卡挂载到 EnvironmentgetExternalStorageDirectory()这个结点。

此时,调用EnvironmentgetExternalStorageDirectory(),则返回外置的SD的路径。

android 怎样动态的获取sd卡路径

链接电脑USB调试情况下,在电脑上有新的磁盘显示,一个SD的,一个手机的,打开SD的就可以找各文件夹路径

Android怎样获取外部存储器路径

读写sdcard上的文件

其中读写步骤按如下进行:

1、调用Environment的getExternalStorageState()方法判断手机上是否插了sd卡,且应用程序具有读写SD卡的权限,如下代码将返回true

EnvironmentgetExternalStorageState()equals(EnvironmentMEDIA_MOUNTED)

2、调用EnvironmentgetExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录,或者使用"/mnt/sdcard/"目录

3、使用IO流 *** 作SD卡上的文件

注意点:手机应该已插入SD卡,对于模拟器而言,可通过mksdcard命令来创建虚拟存储卡

必须在AndroidManifestxml上配置读写SD卡的权限

<uses-permission android:name="androidpermissionMOUNT_UNMOUNT_FILESYSTEMS"/>

<uses-permission android:name="androidpermissionWRITE_EXTERNAL_STORAGE"/>

我怎样才能获得外部SD卡路径为Android 40 +

1 我想你需要这个外部SD卡:

new File("/mnt/external_sd/")

new File("/mnt/extSdCard/")

你的情况

在更换EnvironmentgetExternalStorageDirectory()您的作品,应在MNT目录优先和工作在那里检查什么

你键入选择哪个SD卡

File storageDir = new File("/mnt/");

if(storageDirisDirectory()){

String[] dirList = storageDirlist();

TODO some type of selecton method

}

怎样获取class路径

import javaioFile;

public class FileTest {

public static void main(String[] args) throws Exception {

Systemoutprintln(ThreadcurrentThread()getContextClassLoader()

getResource(""));

Systemoutprintln(FileTestclassgetClassLoader()getResource(""));

Systemoutprintln(ClassLoadergetSystemResource(""));

Systemoutprintln(FileTestclassgetResource(""));

Systemoutprintln(FileTestclassgetResource("/"));

 Class文件所在路径

Systemoutprintln(new File("/")getAbsolutePath());

Systemoutprintln(SystemgetProperty("userdir"));

Systemoutprintln(SystemgetProperty("fileencoding"));

}

}

android 怎么获取相册路径

android手机42版本之前是一个方法,大于42版本又是一个方法。

注意:现在手机市场android版本2015面上半年平均44,现在是平均50了。

before

你百度一下,都能查到,很简单

after

private void startPickPhotoActivity() {

    Intent intent = new Intent(IntentACTION_OPEN_DOCUMENT);

    intentsetType("image/"); Or 'image/ jpeg '

    startActivityForResult(intent, RESULT_PICK_PHOTO_NORMAL);

    }

获得返回的路径

    @Override

    protected void onActivityResult(int requestCode, int resultCode,

        Intent data) {

    if (requestCode == RESULT_PICK_PHOTO_NORMAL) {

        if (resultCode == RESULT_OK && data != null) {

选中路径

mFileName = MainActivitygetPath(getApplicationContext(),

            datagetData());

        if (""equals(mFileName)) {

            return;

        }

        Intent intent = new Intent(this, EditActivityclass);

        intentputExtra("pathName", mFileName);

        startActivity(intent);

        }

    }

    }

    @TargetApi(BuildVERSION_CODESKITKAT)

    public static String getPath(final Context context, final Uri uri) {

    final boolean isKitKat = BuildVERSIONSDK_INT >= BuildVERSION_CODESKITKAT;

     DocumentProvider

    if (isKitKat && DocumentsContractisDocumentUri(context, uri)) {

        ExternalStorageProvider

        if (UriUtilsisExternalStorageDocument(uri)) {

        final String docId = DocumentsContractgetDocumentId(uri);

        final String[] split = docIdsplit(":");

        final String type = split[0];

        if ("primary"equalsIgnoreCase(type)) {

            return EnvironmentgetExternalStorageDirectory() + "/"

                + split[1];

        }

        }

        DownloadsProvider

        else if (UriUtilsisDownloadsDocument(uri)) {

        final String id = DocumentsContractgetDocumentId(uri);

        final Uri contentUri = ContentUriswithAppendedId(

            Uriparse("content:downloads/public_downloads"),

            LongvalueOf(id));

        return UriUtilsgetDataColumn(context, contentUri, null, null);

        }

        MediaProvider

        else if (UriUtilsisMediaDocument(uri)) {

        final String docId = DocumentsContractgetDocumentId(uri);

        final String[] split = docIdsplit(":");

        final String type = split[0];

        Uri contentUri = null;

        if ("image"equals(type)) {

            contentUri = MediaStoreImagesMediaEXTERNAL_CONTENT_URI;

        } else if ("video"equals(type)) {

            contentUri = MediaStoreVideoMediaEXTERNAL_CONTENT_URI;

        } else if ("audio"equals(type)) {

            contentUri = MediaStoreAudioMediaEXTERNAL_CONTENT_URI;

        }

        final String selection = MediaColumns_ID + "=";

        final String[] selectionArgs = new String[] { split[1] };

        return UriUtilsgetDataColumn(context, contentUri, selection,

            selectionArgs);

        }

    }

     MediaStore (and general)

    else if ("content"equalsIgnoreCase(urigetScheme())) {

        Return the remote address

        if (UriUtilsisGooglePhotosUri(uri))

        return urigetLastPathSegment();

        return UriUtilsgetDataColumn(context, uri, null, null);

    }

     File

    else if ("file"equalsIgnoreCase(urigetScheme())) {

        return urigetPath();

    }

    return null;

    }

如何获取android sdcard路径

EnvironmentgetExternalStorageDirectory()

android怎么获取U盘路径

用Re管理器进入/mnt/目录一个一个找

android怎么获取分区路径

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

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

此目录下有个busybox和1txt文件。则利用CP命令拷贝如下:/busybox cp1txt /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,它的包名叫testhello则,在data/data/目录下会有一个testhello的目录,这个APK只能 *** 作此目录,不能 *** 作其它APK的目录这个在LINUX下叫做用户进程只能 *** 作自己的进程目录

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

data/system目录下面有packagesxml ,packageslist,appwidgetsxml, 等等一些记录手机安装的软件,Widget等信息。

data/misc目录:保存WIFI帐号,***设置信息等。如保存了一个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

thisgetClass()getResource是得到当前对象对应的类文件(class)所在的目录下的文件。所以通过thisgetClass()getResource去获得C盘中的数据是获取不到的。

像C:\\loginwav这样的绝对路劲,你可以这样来获取:

URL url = new File("C:\\loginwav")toURI()toURL();

补充:

这个要看你的Pan这个类编译成的class文件在什么地方。thisgetClass()getResource()是相对于Panclass这个类文件的文件来说的,如果loginwav和Panclass同一目录下,那么thisgetClass()getResource("loginwav")就能获取到,如果loginwav是在Panclass的下一级目录music下,那么就是

thisgetClass()getResource("music/loginwav")了。

像这样的根据ClassLoader来获取资源的方式,应该不能查找上一级目录。如:

thisgetClass()getResource("/aa");这样好像是不行的。所以如果要取相对路径,那么要么就把loginwav和Panclass文件放在同一目录,要么就把loginwav放在Panclass的下一级目录。

如果还有什么不清楚,可以再说出来。我再补充。

java项目中文件的路径-方法大全

一、 相对路径的获得

说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目)

SystemgetProperty("userdir");

上述相对路径中,java项目中的文件是相对于项目的根目录web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于tomcat安装目录\bin)

二 类加载目录的获得(即当运行时某一类时获得其装载目录)

11)通用的方法一(不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录)

InputStreamis=TestActionclassgetClassLoader()getResourceAsStream("testtxt"); (testtxt文件的路径为 项目名\src\testtxt;类TestPath所在包的第一级目录位于src目录下)

上式中将TestPath,testtxt替换成对应成相应的类名和文件名字即可

12)通用方法二 (此方法和11中的方法类似,不同的是此方法必须以'/'开头) InputStream is=Test1classgetResourceAsStream("/testtxt"); 

(testtxt文件的路径为 项目名\src\testtxt,类Test1所在包的第一级目录位于src目录下)

三 web项目根目录的获得(发布之后)

1 从servlet出发

可建立一个servlet在其的init方法中写入如下语句(没有请求的话会抛空指针导常)

ServletContext s1=thisgetServletContext();

String temp=s1getRealPath("/"); (关键) 

结果形如:F:\tomcat-6036\webapps\test\(test为项目名字)

如果是调用了s1getRealPath("")则输出F:\tomcat-6036\webapps\test(少了一个"\")

2 从>

String path=requestgetSession()getServletContext()getRealPath("/");

结果形如: F:\tomcat-6036\webapps\test\

四 classpath的获取(在Eclipse中为获得src或者classes目录的路径),放在监听器,可以窗口启动获取路径

方法一 ThreadcurrentThread()getContextClassLoader()getResource("")getPath()

String path = ThreadcurrentThread()getContextClassLoader()

getResource("")getPath();

Systemoutprintln("path========" + path);输出: path========/F:/tomcat-6036/webapps/test/WEB-INF/classes/

方法二 JdomParseclassgetClassLoader()getResource("")getPath() (JdomParse为src某一个包中的类,下同)

eg:String p1=JdomParseclassgetClassLoader()getResource("")getPath();

Systemoutprintln("JdomParseclassgetClassLoader()getResource--"+p1);

输出:JdomParseclassgetClassLoader()getResource-/F:/tomcat-6036/webapps/test/WEB-INF/classes/

另外,如果想把文件放在某一包中,则可以 通过以下方式获得到文件(先定位到该包的最后一级目录)

eg String p2=JdomParseclassgetResource("")getPath(); 

Systemoutprintln("JdomParseclassgetResource---"+p2);

输出:JdomParseclassgetResource--/F:/tomcat-6036/webapps/test/WEB-INF/classes/

(JdomParse为src目录下jdom包中的类)

四 属性文件的读取:

方法 一

InputStream in = lnewBufferedInputStream( new FileInputStream(name)); 

Properties p = new Properties(); pload(in);

注意路径的问题,做执行之后就可以调用pgetProperty("name")得到对应属性的值

方法二

Locale locale =LocalegetDefault(); 

ResourceBundle localResource = ResourceBundlegetBundle("test/propertiesTest",locale); 

String value = localResourcegetString("test"); 

Systemoutprintln("ResourceBundle: " + value);

工程src目录下propertiesTestproperties(名字后缀必须为properties)文件内容如下:

test=hello word

不通过Servlet获取路径

第一种实现

Java代码

URL url = ClassLoadergetSystemClassLoader()getResource("/");

File file =new File(urlgetPath());

File parentFile =new File(filegetParent());

Systemoutprintln("webRoot:"+parentFilegetParent());

第二种实现 

首先写一个接听类 (推荐使用,容器启动时就执行,不会抛空指针异常,适合做定时器任务来删除服务器文件的路径)

Java代码:

package comchinacreatorreportlistener; 

import javaxservletServletContext;

import javaxservletServletContextEvent;

import javaxservletServletContextListener;

/

@authorxiaoqunyi

/

public class PathListener implementsServletContextListener {

private staticServletContext servletContext;

public voidcontextDestroyed(ServletContextEvent sce) {

thisservletContext= scegetServletContext();

Systemoutprintln("path=======:"+servletContextgetRealPath("/"));

}

public voidcontextInitialized(ServletContextEvent arg0) {

}

}

在webxml中加入如下配置

Java代码 :

<listener>

<listener-class>comchinacreatorreportlistenerPathListener</listener-class>

</listener>

五、Java中的getResourceAsStream有以下几种: 

1 ClassgetResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由 ClassLoader(类加载器)(获取资源)

2 ClassgetClassLoadergetResourceAsStream(String path) :默认则是从ClassPath根下获取,path不能以’/'开头,最终是由ClassLoader获取资源。

3 ServletContext getResourceAsStream(String path):默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓,当然这和具体的容器实现有关。

4 Jsp下的application内置对象就是上面的ServletContext的一种实现。 

其次,getResourceAsStream 用法大致有以下几种: 

第一: 要加载的文件和class文件在同一目录下,例如:comxy 下有类meclass ,同时有资源文件myfilexml 

那么,应该有如下代码: 

meclassgetResourceAsStream("myfilexml"); 

第二:在meclass目录的子目录下,例如:comxy 下有类meclass ,同时在 comxyfile 目录下有资源文件myfilexml 

那么,应该有如下代码: 

meclassgetResourceAsStream("file/myfilexml"); 

第三:不在meclass目录下,也不在子目录下,例如:comxy 下有类meclass ,同时在 comxfile 目录下有资源文件myfilexml

那么,应该有如下代码: 

meclassgetResourceAsStream("/com/x/file/myfilexml"); 

总结一下,可能只是两种写法 

第一:前面有 “   / ” 

“ / ”代表了工程的根目录,例如工程名叫做myproject,“ / ”代表了myproject 

meclassgetResourceAsStream("/com/x/file/myfilexml"); 

第二:前面没有 “   / ” 

代表当前类的目录 

meclassgetResourceAsStream("myfilexml"); 

meclassgetResourceAsStream("file/myfilexml");

相对路径的话,可以先获取到当前文件的编译路径,之后在找到想找文件的路径的思路来实现。

举例:

XMLSclassgetClass()getResourceAsStream("/test/testxml");

解释:XMLSclassgetClass()是获取当前的类编译路径,之后通过getResourceAsStream的形式即可找到要读取的文件的路径。

备注:这个方法中后面的路径也可以通过截取的形式来进行路径获取,实现原理都是找到当前类路径,之后通过相对位置找到另外文件路径。

在使用eclipse的时候,编写好源代码点击运行按钮就会在控制台出现结果。大家都知道,JVM执行的是字节码文件而不是源文件,那么字节码文件放在哪里?eclipse在哪里找?通过以下分析来解决这个问题。

工具: Eclipse Neon版本

源码: Studentjava

1使用eclipse编写Studentjava源文件

                       2 在对应的工作空间的bin文件夹中生成字节码文件(class文件)

(此eclipse的工作空间:E:\Eclipse Neon2\workspace)

   

此工作空间下的bin文件下存在的就是class字节码文件:

3通过设置Java运行的环境变量以及Eclipse自身工具的特性,自动找到工作空间中的bin文件夹中的class文件并执行。

javaweb中的java文件会在服务器中生成class文件,比如tomcat目录下的webapps目录下,放你的javaweb项目,在项目中有个WEB-INF目录,里面有一个classes文件夹,里面放的都是对源码进行编译后生成的class文件

File类有两个常用方法可以得到文件路径一个是:getCanonicalPath(),另一个是:getAbsolutePath(),可以通过File类的实例调用这两个方法例如filegetAbsolutePath()其中file是File的实例对象。下面是一个具体例子:

public class PathTest

{

public static void main(String[] args)

{

File file = new File("\\src\\baidu");

Systemoutprintln(filegetAbsolutePath());

try

{

Systemoutprintln(filegetCanonicalPath());

} catch (IOException e)

{

eprintStackTrace();

}

}

}

getAbsolutePath()和getCanonicalPath()的不同之处在于,getCanonicalPath()得到的是一个规范的路径,而getAbsolutePath()是用构造File对象的路径+当前工作目录。例如在上面的例子中(点号)代表当前目录。getCanonicalPath()就会把它解析为当前目录但是getAbsolutePath()会把它解析成为目录名字(目录名字是点号)。

下面是上面程序在我电脑上的输出:

G:\xhuoj\konw\\src\baidu

G:\xhuoj\konw\src\baidu

以上就是关于xamarin怎样获取android外卡路径全部的内容,包括:xamarin怎样获取android外卡路径、JAVA中获取资源问题 this.getClass().getResource("C:\\login.wav");、java项目中文件的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://www.outofmemory.cn/web/9423793.html

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

发表评论

登录后才能评论

评论列表(0条)

保存