首页文章android手机的内部存储手机文件夹「android手机的内部存储」

android手机的内部存储手机文件夹「android手机的内部存储」

时间2025-03-16 13:05:45发布yu分类文章浏览19
导读:内部存储: 在data/data/packagename中(一个app对应一个packagename) 常见文件夹有cache ,code_cache ,files , databases , shared_p...

内部存储:

在data/data/packagename中(一个app对应一个packagename)

常见文件夹有cache ,code_cache ,files , databases , shared_prefs 和一个lib文件

 

files: 文件缓存目录,一般存小的文件缓存,如果是图片,不建议放这里,一般放到外置卡。

cache目录: 存放一些其他缓存

databases: 存放数据库

lib: 存放应用的so目录

shared_prefs: 存放应用的SharedPreferences

 

常用方法:

1. Context.getFilesDir()   返回一个File对象,当Log打印出file.getAbsolutePath()时看到的是:

/data/user/0/packagename/files ,

而user下的文件夹0就是datadata的一个链接名, 实际位置就是在 /data/data/packagename/files里

注意安装app后files文件夹里若没有任何东西时是不会看到这个文件夹的,而执行以下代码:

File f1 = getFilesDir();
Log.e("TAG","getFilesDir(): " + f1.getAbsolutePath());
try {
    File dir1 = new File(getFilesDir(),"dir1");
    if (!dir1.exists()){
        dir1.mkdir();
    }
    File f = new File(dir1, "test1.txt");
    FileOutputStream fos = new FileOutputStream(f);
    String txt = "Hello test1!";
    fos.write(txt.getBytes());
    fos.close();
}catch (Exception e){
    e.printStackTrace();
}

结果会自动在/data/data/packagename中先创建一个files文件夹,在files里再创建了一个dir1文件夹,dir1中有一个test1.txt

若不需要创建文件夹,安卓还为我们提供了一个简便方法,得到可直接在files中写入文件的输出流,执行以下代码:

String fileName = "test2.txt";
String txt = "hello test2";
FileOutputStream fos;
try {
    fos = openFileOutput(fileName,MODE_PRIVATE);
    fos.write(txt.getBytes());
    fos.close();
}catch (Exception e){
    e.printStackTrace();
}

Context.openFileOutput(String name, int mode)返回一个输出流

Context.openFileInput(String name) 返回一个输入流

此时目录结构如下:

 

2. getCacheDir() 和 getCodeCacheDir() 显然分别返回 /data/data/packagename下cache和code_cache对应的File对象

 

3.在包下创建目录(与files,cache这些文件夹同级)

File myFile = getDir("myfile",MODE_PRIVATE);
if(!myFile.exists()){
    myFile.mkdir();
}

结果目录为:

app_myfile 就是自己创建的文件夹

 

总结:

1). 对files:getFilesDir()

==  new File("/data/data/"+ context.getPackageName() + "/files")

(openFileOutput,openFileInput得到的是文件流)

 

2).对cache和code_cache

getCacheDir() 和 getCodeCacheDir()

== new File("/data/data/"+ context.getPackageName() + "/cache") 和 new File("/data/data/"+ context.getPackageName() + "/code_cache")

 

3).对根目录

getDir(String name, int mode)

== new File("/data/data/"+ context.getPackageName() + "/" + name)

 

4) . 对shared_prefs

1.Context类中的getSharedPreferences(String name, int mode) 方法

SharedPreferences sp = getSharedPreferences("data",MODE_PRIVATE);

2.Activity类中的getPreferences(int mode) 方法

用法同上,不用传入sp的name是因为使用此方法是会自动将当前活动的类名作为sp的文件名

 

3.PreferenceManager类中的getDefaultSharedPreferences(Context context) 方法

这是一个静态方法,接收一个Context参数,并自动使用应用程序的包名作为前缀来命名sp文件

 

 

 

 

 

 

 

昭通版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com

展开全文READ MORE
手机文件夹存储内部
Android之高仿手机QQ聊天高仿手机「Android之高仿手机QQ聊天」 小米手机华为手机哪个好小米手机好吗「小米手机华为手机哪个好」