① 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手机上已安装软件的下载位置或来源
下载位置在于有没有删除,没有删除的话,搜索下apk文件安装包即可。
下载来源就没法判断了,因为方式太多了。安装包不会显示下载来源的。
如果只是想要安装包,可以搜索相关软件名称。
或者用es 幸运破解器之类的软件提取或者备份已经安装的软件。
③ 如何获取android项目下某个文件的绝对路径
比如要获取 要获取libjnixcld.so绝对路径
File file=new File("/data/data/com.dtBank.app.service/lib/libjnixcld.so")
简单的说就是/data/data/packagename/你的文件夹名称/文件名
非隐藏文件可以这样获取
以上方法只能获取动态共享库的绝对路径
对于像minde.dat,public.dat以及其他一些文件获取路径的方式如下:
一,将文件放入assets文件夹下面(放入此文件夹下面的文件可通过InputStream in=context.getAssets().open("public.dat"));
获得其二进制形式的流,具体例子如下
package com.dtBank.app.service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.os.Environment;
import android.util.Log;
/**
* 获得加密文件的路径
* @author hb
*
*/
public class getEncryptionFilePath {
class Obj{
InputStream in;
String fileDir;
String folder;
}
String lock="";
private void getCryptFilePath(Obj obj){
synchronized(lock){
try{
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File cryptDir= new File(obj.folder);
Log.v("bb","创建的文件夹:"+obj.folder);
cryptDir.mkdirs();
OutputStream os= new FileOutputStream(obj.fileDir);
byte[] buf = new byte[1024*10];
int l;
Log.v("bb","开始写文件");
InputStream in=obj.in;
while ((l = in.read(buf)) != -1) {
os.write(buf, 0, l);
os.flush();
}
Log.v("bb","文件已写完");
os.close();
in.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
// 调用此方法获取文件在sdcard上面的绝对路径
public void execute(Context context){
InputStream in=null;
OutputStream out=null;
try{
in =(context.getAssets().open("mixed.dat"));
String fileDir_mixed="/sdcard/xcloudmixed/mixed.dat";
final Obj obj=new Obj();
obj.in=in;
obj.fileDir=fileDir_mixed;
obj.folder="/sdcard/xcloudmixed";
new Thread(){
@Override
public void run(){
getCryptFilePath(obj);
}
}.start();
in =(context.getAssets().open("public.dat"));
String fileDir_public="/sdcard/xcloudpublic/public.dat";
final Obj obj1=new Obj();
obj1.in=in;
obj1.fileDir=fileDir_public;
obj1.folder="/sdcard/xcloudpublic";
new Thread(){
@Override
public void run(){
getCryptFilePath(obj1);
}
}.start();
}catch(Exception e){
e.printStackTrace();
}
}
}
④ android 程序内如何获取已经安装的apk文件路径我已经知道包名,希望可以用代码拿到安装用的apk文件
提取包可以用豌豆荚手机助手,它可以提取你已经安装的apk文件
⑤ 怎么获取android studio某个文件路径
工具/原料
Android studio
方法/步骤
需要在项目中找到文件路径,就需要在Android studio的项目中导入一个项目的文件。
并找到需要在电脑中需要的路径位置,随意选中一个文件。
进行点击Android studio菜单中的Navigate的选项菜单。
弹出了下拉菜单中,进行选中下拉菜单中的“select in”的选项。
然后就会在当前的文件中弹出了一个下拉菜单框,进行选中下拉菜单中的show in explorer的选项。
然后进入到了电脑中文件夹位置中。
⑥ 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 如何代码获取系统文件夹的路径,比如字体的文件路径system/fonts
1.
// 从sd卡获取图片资源
private List<String> getImagePathFromSD() {
// 图片列表
List<String> picList = new ArrayList<String>();
/
// 得到sd卡内路径
String imagePath =
Environment.getExternalStorageDirectory().toString()
+ "/image";
// 得到该路径文件夹下所有的文件
File mfile = new File(imagePath);
File[] files = mfile.listFiles();
// 将所有的文件存入ArrayList中,并过滤所有图片格式的文件
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (checkIsImageFile(file.getPath())) {
picList.add(file.getPath());
}
}
// 返回得到的图片列表
return picList;
}
// 检查扩展名,得到图片格式的文件
private boolean checkIsImageFile(String fName) {
boolean isImageFile = false;
// 获取扩展名
String FileEnd = fName.substring(fName.lastIndexOf(".") + 1,
fName.length()).toLowerCase();
if (FileEnd.equals("jpg") || FileEnd.equals("gif")
|| FileEnd.equals("png") || FileEnd.equals("jpeg")
|| FileEnd.equals("bmp")) {
isImageFile = true;
} else {
isImageFile = false;
}
return isImageFile;
}
⑧ android下怎么获取res资源文件夹的路径
Resources resources = getResources();
getResources().getColor(R.color.colorAccent);//获取颜色
getResources().getDimension(R.dimen.activity_horizontal_margin); //获取长度
getResources().getDrawable(R.drawable.press) ; //获取drawable资源
不过现在一般都弃用了,现在的用法是:
ContextCompat.getColor(getApplicationContext(),R.color.colorAccent);
ContextCompat.getDrawable(getApplicationContext(),R.drawable.press);
⑨ Android:怎么获取当前文件(类)所在的目录的完整路径
android的硬存储是按照linux系统规则来划分的,用于存储客户信息和客户安装的应用的是/data分区,你如果使用的是c程序的话,应该是在/data/app之类的下面,我手头没有板子没法给你查。文件夹是google约定俗成的,不同厂家应该都是一样的路径。如果是厂家定制的应用则是在/system分区下,路径应该是/system/app下。
如果你是一个android系统学习者,而不是应用开发者的话,我建议看看以下system/etc/initrc对于你会有很大的帮助。