文件操作
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目录下创建公有目录,来存放可以公开的数据。

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