导航:首页 > 操作系统 > 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大小相关的资料

热点内容
加固的app反编译 浏览:908
字符串混淆算法 浏览:88
辽宁海关压缩时间 浏览:540
web备忘录源码 浏览:35
芝麻开门的新app怎么用 浏览:398
与何皇后有染的三国小说 浏览:198
msgtopdf 浏览:324
孕妇系列哪几部好看 浏览:315
有关楼上男人看楼下女人的电影 浏览:889
android70预览版 浏览:879
最新适合年轻人看的电影 浏览:188
神经网络算法可以解决吗 浏览:148
南瓜电影下载的视频放哪个文件夹 浏览:844
不卡顿的电视剧官网 浏览:279
凿空者之雪域天马演员表 浏览:214
怎么关掉安卓手机触摸上方黑屏 浏览:749
男主娶母女 浏览:482
阁瑞斯压缩机漏电怎么处理 浏览:19
有个叫阿水的在一个岛上的电影叫什么 浏览:161
韩剧食物链酒吧老板娘的演员叫什么 浏览:485