導航:首頁 > 操作系統 > androidfilepath

androidfilepath

發布時間:2023-01-07 19:53:16

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的文件輸入流,該怎麼解決

剛接觸android,要發送文件,先獲得文件輸入流,然後把數據放到socket輸出流。
問題就來了,獲取文件輸入流的時候就出錯,調試也是到這里就不行了,為此請教各位。
補充:我已經加入了sdcard的讀寫許可權和socket許可權。
Socket ConnectSocket = new Socket("192.168.137.1",8889); //建立socket連接

String filepath = allpath;
File file = new File(filepath);
FileInputStream fis = new FileInputStream(filepath); //文件輸入流
OutputStream os = ConnectSocket.getOutputStream(); //socket輸出流

㈢ 如何獲取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怎麼獲取一個文件的地址

跟java里獲取當前本地文件、文件夾,,點擊文件夾,顯示該文件夾下的文件和文件夾,是沒有區別的啊,唯一就是在文件夾上添加監聽事件,然後獲取對象就是了……

activity :
package com.hundsun.zhoujl.android;

import java.io.File;
import java.util.ArrayList;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class Test_fileActivity extends ListActivity {

private ArrayList<String> items = null;

private ArrayList<String> paths = null;

private String rootPath = "/";

private TextView mPath;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mPath = (TextView)findViewById(R.id.mPath);

mPath.setTextColor(Color.RED);

getFileDir(rootPath);

}

private void getFileDir(String filePath) {

mPath.setText(filePath);

items = new ArrayList<String>();

paths = new ArrayList<String>();

File file = new File(filePath);

File[] files = file.listFiles();

if(!filePath.equals(rootPath)) {

items.add("Back To " + rootPath);

paths.add(rootPath);

items.add("Back to ../");

paths.add(file.getParent());

}

for(File fileTemp :files) {

items.add(fileTemp.getName());

paths.add(fileTemp.getPath());

}

ArrayAdapter<String> adapter = new ArrayAdapter<String>(Test_fileActivity.this,R.layout.file_now,items);

setListAdapter(adapter);

}

@Override

protected void onListItemClick(ListView l, View v, int position, long id) {

File file = new File(paths.get(position));

if(file.canRead()) {

if(file.isDirectory()) {

getFileDir(paths.get(position));

}else {

new AlertDialog.Builder(this)

.setTitle("Message")

.setMessage("["+file.getName() + "] is a file")

.setPositiveButton("ok", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

}

}).show();

}

}else {

new AlertDialog.Builder(this)

.setTitle("Message")

.setMessage("許可權不足~")

.setPositiveButton("ok", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

}

}).show();

}

}

}
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/mPath"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<ListView

android:id="@android:id/list"

android:layout_width="fill_parent"

android:layout_height="wrap_content"
>
</ListView>

</LinearLayout>

file_now.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="20px"
android:textSize="14sp"
>

</TextView>

㈤ android如何獲取本地文件屬性信息

通過主動的方式通知系統我們需要文件列表,要向系統發送廣播

sendBroadcast(newIntent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse(「file://」
+Environment.getExternalStorageDirectory())));

然後通過接收器獲取系統文列表


{
privatefinalstaticStringTAG=」MediaScannerReceiver」;
@Override
publicvoidonReceive(Contextcontext,Intentintent){
Stringaction=intent.getAction();
Uriuri=intent.getData();
StringexternalStoragePath=Environment.getExternalStorageDirectory().getPath();
if(action.equals(Intent.ACTION_BOOT_COMPLETED)){
//scaninternalstorage
scan(context,MediaProvider.INTERNAL_VOLUME);
}else{
if(uri.getScheme().equals(「file」)){
//
Stringpath=uri.getPath();
if(action.equals(Intent.ACTION_MEDIA_MOUNTED)&&
externalStoragePath.equals(path)){
scan(context,MediaProvider.EXTERNAL_VOLUME);
}elseif(action.equals(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)&&
path!=null&&path.startsWith(externalStoragePath+」/」)){
scanFile(context,path);
}
}
}
}
privatevoidscan(Contextcontext,Stringvolume){
Bundleargs=newBundle();
args.putString(「volume」,volume);
context.startService(
newIntent(context,MediaScannerService.class).putExtras(args));
}
privatevoidscanFile(Contextcontext,Stringpath){
Bundleargs=newBundle();
args.putString(「filepath」,path);
context.startService(
newIntent(context,MediaScannerService.class).putExtras(args));
}
}

㈥ androidStudio運行報錯File path too long on Windows,

文件路徑太長了,現在在240字元以內,你可以把文件移動到F盤根目錄或二級目錄,以簡短文件路徑的長度

㈦ Android中如何使用代碼打開各種類型的文件

在安卓中打開音樂、視頻、圖片、文檔等文件是需要有讀取SD卡許可權的,如果是6.0以下的系統,則直接在清單文件中聲明SD卡讀取許可權即可;如果是6.0或以上,則需要動態申請許可權。

在7.0以下中打開文件時,通過intent調用系統安裝得人軟體打開文件就好了,但是在android7.0及以上的機子上這么做會報android.os.FileUriExposedException錯誤,

1)讀取SD卡

2)動態申請許可權

//設備API大於6.0時,主動申請許可權(讀取文件的許可權)

public static  void requestPermission(Activity context) {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

        if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)

                != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,

                    Manifest.permission.READ_EXTERNAL_STORAGE}, 0);

        }

    }

}

3)讀取文件

intent = OpenFileUtil.openFile(filePath+"/"+FileName+"."+end);

使用OpenFileUtil這個。鏈接: https://www.jianshu.com/p/1414101858c1

為了兼容Android7.0,獲取文件Uri需要使用到FileProvider。

1)首先是AndroidManifest文件裡面注冊FileProvider

    android:name="android.support.v4.content.FileProvider"

    android:authorities="${applicationId}.provider"

    android:exported="false"

    android:grantUriPermissions="true">

        android:name="android.support.FILE_PROVIDER_PATHS"

        android:resource="@xml/provider_paths" /> //需要自己編寫xml文件

2)provider_paths.xml文件的編寫

    // .表示根目錄

3)打開文檔方式為

intent = new Intent(Intent.ACTION_VIEW);

intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

File txtFile = new File(filePath+"/"+FileName+"."+end);

Uri contentUri = FileProvider.getUriForFile(MyApplication.getContext(), BuildConfig.APPLICATION_ID+".provider", txtFile);

intent.setDataAndType(contentUri, "application/vnd.android.package-archive");

grantUriPermission(context, contentUri, intent);

startActivity(intent);

4)grantUriPermission方法添加許可權

private static void grantUriPermission (Context context, Uri fileUri, Intent intent) {

    List resInfoList = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

    for (ResolveInfo resolveInfo : resInfoList) {

        String packageName = resolveInfo.activityInfo.packageName;

        context.grantUriPermission(packageName, fileUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);

    }

}

綜合兩種情況:

//判斷是否是AndroidN以及更高的版本,Build.VERSION_CODES.N是Android 7.0

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

    intent = new Intent(Intent.ACTION_VIEW);

    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    File txtFile = new File(filePath+"/"+FileName+"."+end);

    Uri contentUri = FileProvider.getUriForFile(MyApplication.getContext(), BuildConfig.APPLICATION_ID+".provider", txtFile);

    Log.i("文件地址:",contentUri.toString());

    intent.setDataAndType(contentUri, "application/vnd.android.package-archive");

    grantUriPermission(MyApplication.getContext(), contentUri, intent);

} else {

    //7.0以下的可以打開文件了

    intent = OpenFileUtil.openFile(filePath+"/"+FileName+"."+end);

}

MyApplication.getContext().startActivity(intent);

㈧ android開發如何執行下載圖片到指定目錄里,然後通過imageview去讀取該圖片。

1、首先你有一個保存圖片的路徑 filePath

還有一個現在圖片的鏈接 url

StringfilePath="....";
Stringurl="....";
bytes[]b=newbytes[1024];
Filefile=newFile(filePath);
FileOutputStreamfs=newFileOutputStream(file);
InputStreamin=newURL(url);
while(in.read(b)){
fs.wirte(b);
}
Bitmapbitmap=BitmmapFactory.decodeStream(in);
imageView.setBitmapResource()

大概就是這樣詳細的你自己弄吧

㈨ Android開發:filePath放在哪個文件夾

Environment.getDataDirectory() = /data
Environment.getDownloadCacheDirectory() = /cache
Environment.getExternalStorageDirectory() = /mnt/sdcard
Environment.(「test」) = /mnt/sdcard/test
Environment.getRootDirectory() = /system
getPackageCodePath() = /data/app/com.my.app-1.apk
getPackageResourcePath() = /data/app/com.my.app-1.apk
getCacheDir() = /data/data/com.my.app/cache
getDatabasePath(「test」) = /data/data/com.my.app/databases/test
getDir(「test」, Context.MODE_PRIVATE) = /data/data/com.my.app/app_test
getExternalCacheDir() = /mnt/sdcard/Android/data/com.my.app/cache
getExternalFilesDir(「test」) = /mnt/sdcard/Android/data/com.my.app/files/test
getExternalFilesDir(null) = /mnt/sdcard/Android/data/com.my.app/files
getFilesDir() = /data/data/com.my.app/files

㈩ android開發怎樣獲得文件夾中的所有文件

有的時候程序需要去對android的指定目錄或者全局目錄進行遍歷獲取其中的文件,但是獲取文件的時候可能會遇到無法列出文件夾中的文件的問題,這就是出現的問題,對於某個子文件夾進行獲取listFiles()的時候返回為NULL,也就是不允許列出文件夾中內容。
這個是由於android中的安全機制的緣故,由於android繼承了Linux系統的傳統,對於某個特定的目錄有用戶的許可權,一共分為三種--可讀,可寫,可執行;雖然說可以設置某個特定的目錄的許可權,但是對於目錄裡面的子目錄和子文件都可以進行許可權的設置,也就是說出了根目錄許可權之外,子目錄本身的許可權也決定了子目錄可否訪問,這一點需要清楚了解,所以在判斷完了是否是目錄之外,還需要在進行listFiles()獲取File[]數據後判斷獲取的數組是否為空,如果為空的話,文件夾是不可訪問的。樣例代碼如下:
01 package net.nowamagic.file;
02 import java.io.File;
03 import java.util.ArrayList;
04 import java.util.HashMap;
05 import java.util.Map;
06 import android.util.Log;
07 /**
08 * @author
09 * function 用於掃描SD卡上的文件
10 *
11 */
12 public class FileScan {
13
14 private static final String TAG = "FileScan";
15 public HashMap<String, String> getMusicListOnSys(File file) {
16
17 //從根目錄開始掃描
18 Log.i(TAG, file.getPath());
19 HashMap<String, String> fileList = new HashMap<String, String>();
20 getFileList(file, fileList);
21 return fileList;
22 }
23
24 /**
25 * @param path
26 * @param fileList
27 * 注意的是並不是所有的文件夾都可以進行讀取的,許可權問題
28 */
29 private void getFileList(File path, HashMap<String, String> fileList){
30 //如果是文件夾的話
31 if(path.isDirectory()){
32 //返迴文件夾中有的數據
33 File[] files = path.listFiles();
34 //先判斷下有沒有許可權,如果沒有許可權的話,就不執行了
35 if(null == files)
36 return;
37
38 for(int i = 0; i < files.length; i++){
39 getFileList(files[i], fileList);
40 }
41 }
42 //如果是文件的話直接加入
43 else{
44 Log.i(TAG, path.getAbsolutePath());
45 //進行文件的處理
46 String filePath = path.getAbsolutePath();
47 //文件名
48 String fileName = filePath.substring(filePath.lastIndexOf("/")+1);
49 //添加
50 fileList.put(fileName, filePath);
51 }
52 }
53
54 }

出處:http://www.nowamagic.net/librarys/veda/detail/1481

閱讀全文

與androidfilepath相關的資料

熱點內容
php和大數據哪個好 瀏覽:928
未來最值得投資的加密貨幣 瀏覽:526
ascii碼是編譯的時候用嗎 瀏覽:779
壓縮機感應包可以通用嗎 瀏覽:410
方舟伺服器怎麼發布到搜索列表 瀏覽:270
xml防反編譯 瀏覽:239
數據傳輸加密系統技術方案 瀏覽:842
程序員沒有準備去面試 瀏覽:4
51單片機usb滑鼠 瀏覽:879
qq伺服器的ip地址查詢 瀏覽:112
java仿qq聊天 瀏覽:400
解壓的ipa重新打包 瀏覽:142
程序員那麼可愛vip版 瀏覽:239
程序員怎麼升職 瀏覽:243
圖形化命令按鈕vb 瀏覽:987
vcu盤加密怎麼設置 瀏覽:415
如何加密備份微信聊天記錄 瀏覽:529
安卓手機如何模擬鍵盤 瀏覽:932
查看dns地址命令 瀏覽:769
android錄屏工具 瀏覽:842