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项目中文件的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)