Environment 常用方法:
* 方法:getDataDirectory()解释:返回 File ,获取 Android 数据目录。* 方法:getDownloadCacheDirectory()解释:返回 File ,获取 Android 下载/缓存内容目录。* 方法:getExternalStorageDirectory()解释:返回 File ,获取外部存储目录即 SDCard* 方法:getExternalStoragePublicDirectory(String type)解释:返回 File ,取一个高端的公用的外部存储器目录来摆放某些类型的文件* 方法:getExternalStorageState()解释:返回 File ,获取外部存储设备的当前状态* 方法:getRootDirectory()解释:返回 File ,获取 Android 的根目录
Context常用文件路径获取方法:
getCacheDir "/data/data/程序Package Name/cache"
getFilesDir "/data/data/程序Package Name/files"
public FileInputStream openFileInput(String name):读取文件,name为文件名不能包含路径,文件的路径为"/data/data/程序Package Name/files",如果文件不存在,将会出现FileNotFoundException。
public FileOutputStream openFileOutput(String name, int mode):写文件,name为文件名不能包含路径,mode为权限,文件的路径为"/data/data/程序Package Name/files"。
context.openFileOutput(String filename,int mode);
filename不能包含"/"分隔符,只能是文件名,如果该文件不存在会创建.路径为:/data/data/应用包名/files/filename
mode
MODE_PRIVATE 私有(只能创建它的应用访问) 重复写入时会文件覆盖
MODE_PRIVATE 私有 重复写入时会在文件的末尾进行追加,而不是覆盖掉原来的文件
MODE_WORLD_READABLE 公用 可读
MODE_WORLD_WRITEABLE 公用 可读写
1.高效率的文件复制实现
transferTo里面有这么一句话从此通道读取并将内容写入目标通道的简单循环语句相比,此方法可能高效得多。很多操作系统可将字节直接从文件系统缓存传输到目标通道,而无需实际复制各字节 。FileChannel inChannel = new FileInputStream(source).getChannel(); FileChannel outChannel = new FileOutputStream(dest).getChannel(); long size = inChannel.size(); try { inChannel.transferTo(0, inChannel.size(), outChannel);//高效的原因所在 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(inChannel != null){ inChannel.close(); } if(outChannel != null){ outChannel.close(); } }