導航:首頁 > 操作系統 > android獲取file大小

android獲取file大小

發布時間:2023-03-28 01:14:00

android 怎麼獲取應用安裝包的大小

網上找了一下有兩種方法:

1、直接拿到data目錄下對應的包,然後用File.length()方法獲得。然後會發現和設置里顯示的大小不同。

2、通過反射調用設置里源碼的方法獲得PackageStats類的實例。

兩種方法都不想用...

後來自己找到解決辦法:

PackageManager類有個getPackageSizeInfo方法如下:

復制代碼 代碼如下:

public abstract void getPackageSizeInfo(String packageName,

IPackageStatsObserver observer);


只是這個方法是hide的。

自己編譯一下的android2.3的Framework框架,把jar包拷出來,只需要把框架導入到library,設置在默認的android的lib之上遍可以優先使用自己編譯的框架了,其實也就是讓自己應用層能調用框架中的介面。

framework下載:點擊此處

下載好後,通過添加lib後把classes.jar添加到此lib中,如圖:

下面就是直接使用方法了。

代碼如下:

pm.getPackageSizeInfo(packageInfo.packageName,

new IPackageStatsObserver.Stub() {

public void onGetStatsCompleted(PackageStats stats,

boolean succeeded) {

Log.v("King", stats.codeSize);

Log.v("King", stats.dataSize);

Log.v("King", stats.cacheSize);

}

});


第一個參數是包名,想必大家都能拿到。

第二個參數是實現AIDL生成的java介面的匿名內部類。在回調方法里即可處理程序大小數據。

stats.codeSize:應用程序大小

stats.dataSize:數據大小

stats.cacheSize:緩存大小

一般大家可能都是用listView去顯示每個應用的大小,而調用getPackageSizeInfo方法是不能立刻拿到值的,所以要和其他數據非同步顯示。


可以通過handler講數據發送出去後,然後調用Adapter的notifyDataSetChanged()方法更新顯示應用大小。

也許你還想點擊每一項可以可以直接跳轉到設置里的應用管理界面,而不自己去寫卸載、清除緩存等方法。設置源碼的方法如下,可以搬過來照樣用:

代碼如下:

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,Uri.fromParts("package",包名 ,null));

// start new activity to display extended information

startActivityForResult(intent, 1);

❷ android downloadmanager獲取下載文件總大小的時候,為什麼會返回-1。

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Accept-Encoding", "identity");
conn.connect();

加上中間這一圓薯鉛行。(默認使橘好用gzip壓縮,導手灶致無法提前獲取下載文件的總大小,不讓它壓縮即可)

❸ android怎麼讀取sql資料庫db文件大小

先簡單說下步驟:
將格式為.db的資料庫文件放到android項目assets目錄中;
在程序必要的時候,將其「拷貝」(文件讀取)到Android 程序默認的資料庫存儲目錄中,一般路徑為「/data/data/項目包名/databases/「;
自定義SQLiteOpenHelper類,創建一個名字跟步驟1中.db名稱一樣的資料庫;
按照平常邏輯,增刪改查資料庫。

❹ android如何獲取assets文件夾下面文件的大小

InputStream in = getResources().getAssets().open(fileName);
//獲滑罩掘信核取文件悶高的位元組數
int lenght = in.available();

❺ android為什麼用file.lenght()獲取文件的大小為0

配坦游簡置文件都是用SharedPreferences寫的吧,磨攔存在/讓褲data/data/<package name>/shared_prefs目錄下。

❻ android怎樣獲取文件的大小

可以用File對象中的length() 方法得到,建一個File對象,指向你的圖片即可。

❼ android怎麼獲取asset目錄文件大小

進入手機文件管理器;凳神 sdcard1就是手機內存卡,前面的數字是已用空間,後面的是總容量; 進入棗脊虧sdcard1,長按文野叢件夾,點擊更多里的屬性,就可看到文件夾的大小。

❽ Android的java怎麼獲取文件大小

android中的java獲取文件大小的方法:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
public class FileContent {
private String path = "F:\\下載說明.txt";
public FileContent() throws IOException
{
File f = new File(path);
FileReader fileReader = new FileReader(f);
BufferedReader br = new BufferedReader(fileReader);
String str;
while((str = br.readLine() ) != null)
{
System.out.println(str);
}
System.out.println(new FileInputStream(new File(path)).available() / 1024 / 1024 +"M");
}

public static void main(String[] args) {
try {
new FileContent();
} catch (IOException e) {
e.printStackTrace();
}
}
}

❾ Android-HttpURLConnection獲取下載文件大小

最近項目的友擾磨IOS不能顯示圖片,但是Android的Glide框架載入又能顯示,但是通過網頁的形式請求圖片發現如下格式:

感覺怪怪的。Glide這種url也能載入? https://static.xxxxx.com/upload/file/201904/16142046y49f.png (正常頁面請求是一張圖片).

於是想要去獲取下遠程文件好鬥的大小看看能不能獲取fileUrl找個能用的就行:

看了下,都ok的...那就不太懂了。Glide怎麼做的載入?實際試了下,阿里雲獲取圖片有時候 url鏈接後面拼了w,h的欄位 ,然後請求,那樣就可以 - 難道Glide內部做了類似處理? 有李慶空研究下...

❿ 安卓開發上傳txt到file讀取出來多了一個長度

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

dst
登錄

yeqiufeng
關注
Android開發-asset中文件超過1M的解決方法 轉載
2012-07-03 18:52:21

yeqiufeng

碼齡20年

關注
res/raw和assets的相同點:

1.兩者目錄下的文件在打包後會原封不動的保存在飢基帶apk包中,不會被編鋒兆譯成二進制。

res/raw和assets的不同點:
1.res/raw中的文件會被映射到R.java文件中,訪問的時候直接使用資源ID即R.id.filename;assets文件夾下的文件不會被映射到R.java中,訪問的時候需要AssetManager類。
2.res/raw不可以有目錄結構,而assets則可以有目錄結構,也就是assets目錄下可以再建立文件夾

讀取文件資源:

1.讀取res/raw下的文件資源,通過以下方式獲取輸入流來進行寫操作

InputStream is = getResources().openRawResource(R.id.filename);
2.讀取assets下的文件資源,通過以下方式獲取輸入流來進行寫操作

AssetManager am = null ;
am = getAssets();
InputStream is = am.open("filename" );
在未知目錄下有哪些文件,該去和獲取這些文件的名稱並把文件拷貝到目標目錄中呢?

String[] files = getAssets().list("");
來獲取assets目錄下所有文件夾和文件的名稱,再通過這些名稱再讀取我們想要的文件。

Android 對asset與raw的限制

在讀取這兩個資源文件夾中的文件時會有一定爛蘆的限制,即單個文件大小不能超過1M ,如果讀取超過1M的文件會報 「Data exceeds UNCOMPRESS_DATA_MAX (1314625 vs 1048576)「 的IOException。

如何解決呢:

首先想到的是分割文件,再去合並並文件。

假設我們現在要把一個超過1M的文件在程序啟動時拷貝到sdcard中

1.先把需要拷貝的大文件分割成若干個大小小於1M的小文件(事先寫個程序來分隔或者使用一些工具,我這里直接寫了個程序),把這些 小文件放在assets文件夾中。

2.在程序啟動時我們獲取這些小文件的文件名,當然我們得事先規定小文件的命名方式方便我們來獲取這些文件名。
3.通過獲得的小文件名分別建立輸入流來合並成一個大文件,並拷貝到sdcard中。

閱讀全文

與android獲取file大小相關的資料

熱點內容
動力轉向編程 瀏覽:831
史瓦格期貨基本分析pdf 瀏覽:811
怎麼更改appid名字 瀏覽:235
抖音很解壓的東西 瀏覽:520
怎麼在app上進行機場升艙 瀏覽:133
fx3ga用什麼編程軟體 瀏覽:498
深度學習演算法樣本數量 瀏覽:966
電腦文件夾打開畫面塊狀 瀏覽:790
固態硬碟與機械盤的加密方法 瀏覽:634
unix編譯軟體 瀏覽:563
影視製作中西書局中央編譯出版社 瀏覽:822
變數作用域是編譯器決定的嗎 瀏覽:755
linux結構分析 瀏覽:812
程序員記錄歷史 瀏覽:798
編譯器怎麼調用構造函數的 瀏覽:97
高質量cpdf 瀏覽:824
福建電信代理伺服器雲主機 瀏覽:618
美圖看看pdf 瀏覽:434
編譯後報錯 瀏覽:294
網路設備怎麼加密 瀏覽:789