文件操作

文件操作文件操作 1 私有文件操作 私有文件目录 是指 在每个 APP 包中内部的目录文件 只允许本应用读取和写入 目录为 data data package name files xxx xxx 表示文件名

大家好,我是讯享网,很高兴认识大家。

文件操作

1、私有文件操作

==私有文件目录==是指++在每个APP包中内部的目录文件,只允许本应用读取和写入++,目录为:/data/data/[package_name]/files/xxx,(xxx表示文件名),操作私有文件有两种模式:
Context.MODE_PRIVATE 覆盖模式
Context.MODE_APPEND 追加模式

写入示例:

public void writerPrivateClick(View view){ try { //打开私有目录,并写入一个文件,文件是mly,模式为:覆盖模式 //Context.MODE_APPEND:表示追加模式 //此文件存储在:/data/data/[package_name]/files/mly FileOutputStream out = openFileOutput("mly", Context.MODE_PRIVATE); BufferedOutputStream bos = new BufferedOutputStream(out); String info = "hello moliying"; bos.write(info.getBytes()); bos.close(); Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 

讯享网

读取示例:

讯享网public void readPrivateClick(View view){ try { //打开私有文件(mly) FileInputStream input = openFileInput("mly"); BufferedInputStream in = new BufferedInputStream(input); byte[] bytes = new byte[1024]; int len = -1; StringBuilder buf = new StringBuilder(); while((len=in.read(bytes))!=-1){ buf.append(new String(bytes,0,len)); } in.close(); Toast.makeText(MainActivity.this, buf, Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 

2、raw文件的读取(不能写)

raw表示原生文件资源目录(让你用的)


讯享网

//读取raw原生文件 public void rawReadClick(View v) { InputStream input = getResources().openRawResource(R.raw.mly); try { BufferedInputStream in = new BufferedInputStream(input); byte[] bytes = new byte[1024]; int len = -1; StringBuilder buf = new StringBuilder(); while ((len = in.read(bytes)) != -1) { buf.append(new String(bytes, 0, len)); } in.close(); Toast.makeText(MainActivity.this, buf, Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 

3、获取私有缓存目录

我们应该维护缓存目录的大小,比如1MB,不要把大量数据使用私有缓存来存储

讯享网getCacheDir() 

4、FileUtils工具类

/ * 判断外部存储设备是否可写 * @return */ public static boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { return true; } return false; } / * 判断外部存储设备是否可读 * @return */ public static boolean isExternalStorageReadable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { return true; } return false; } / * 获取sdcard根目录 * @return */ public static String getSdcardPath(){ return Environment.getExternalStorageDirectory().getPath(); } 

5、获取sdcard特定目录:

讯享网/ * 获取特定目录 * @param view */ public void getSpecialDirClick(View view){ //下载目录 System.out.println(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS)); //视频目录 System.out.println(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_MOVIES)); //音乐目录 System.out.println(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_MUSIC)); //图片目录 System.out.println(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES)); //警报铃声目录 System.out.println(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_ALARMS)); //像机拍照目录 System.out.println(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DCIM)); //文档目录 System.out.println(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOCUMENTS)); //通知目录 System.out.println(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_NOTIFICATIONS)); //博客铃声目录 System.out.println(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PODCASTS)); //铃声目录 System.out.println(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_RINGTONES)); } 

6、获取外部存储设备的私有化目录

android给我们提供了在sdcard上实现私有化数据的存储,文件存储在:
/sdcard/Android/data/[package_name]/files
/sdcard/Android/data/[package_name]/cache
两个目录分别对应系统应用程序管理的清除数据和清除缓存

注意:
卸载应用时,android系统会默认删除以下目录:
(1)本应用的内部存储的数据
(2)本应用的外部存储的私有数据和缓存

在实际开发中,通常应用除了在私有目录(内部或外部)保存私密数据,也会在sdcard目录下创建公有目录,来存放可以公开的数据。

小讯
上一篇 2025-03-11 16:01
下一篇 2025-01-13 18:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/66635.html