现在的位置: 首页 > 移动开发 > 正文

android 文件存储

2017年04月16日 移动开发 ⁄ 共 1808字 ⁄ 字号 评论关闭

1.文件存储,将文件存储在手机自带的内存中

示例:

/**
	 * 保存文件
	 * @param name 文件名
	 * @param content 文件内容
	 */
	public void save(String name, String content) throws Exception{
		Log.d(TAG,"cache path :" + context.getCacheDir().getAbsolutePath());//获得缓存的dir
		Log.d(TAG,"file dir path :" + context.getFilesDir().getAbsolutePath());//获得当前文件的dir
		FileOutputStream fos = context.openFileOutput(name, Context.MODE_PRIVATE);
		fos.write(content.getBytes());
		fos.close();
	}

android中将文件存储在手机自带的内存中,有四种操作模式:

a.私有操作模式:Context.MODE_PRIVATE,采用此种操作模式创建的文件,有2个特性,此文件以覆盖的方式新建文件,而且创建的文件只能让当前应用程序访问,其他应用程序不能访问

b.追加操作模式:Context.MODE_APPEND,采用这种方式创建的文件,只能让当前应用程序访问,采用追加的方式写文件

c.可读操作模式:Context.MODE_WORLD_READABLE,所有应用程序都能访问,但只能读,不能写

d.可写操作模式:Context.MODE_WORLD_WRITEABLE,所有应用程序都可写,但不能读出数据

另外,如果想让其他所有的应用程序即可读,也可写,可以直接将操作模式相加,例如:Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE

2.将文件存储在sdcard中

示例:

/**
	 * 保存文件
	 * @param name 文件名
	 * @param content 文件内容
	 */
	public void saveToSDCard(String name, String content) throws Exception{
		//尽量不要直接写/mnt/sdcard, 因为1.5,1.6之前的版本不是这个路径,而是/sdcard路径
		/*File file = new File("/mnt/sdcard/hello1/");
		if(!file.exists()){
			file.mkdirs();
		}*/
		
		//通过这个api可以获得存储设备的路径
		File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
		file = new File(file.getAbsolutePath() + "/" + name);
		FileOutputStream fos = new FileOutputStream(file);
		fos.write(content.getBytes());
		fos.close();
	}

另外在往外部存储设备存储数据之前,必须先判断此手机是否支持将数据存储到外部设备:

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//可存储
				//这个文件能被任何应用程序访问
				f.saveToSDCard("helo.txt", "save to sdcard :hello, world");
			}else if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_READ_ONLY)){
				//仅仅可读
				Log.d("log", "磁盘写保护!!!");
			}

而且,如果需要将数据存储到外部存储,需要在manifest.xml文件中声明相应的权限:

 <!-- 挂在文件系统 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <!-- 向sdcard写入数据 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

抱歉!评论已关闭.