File操作相关

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();
            }
        }

 

posted @ 2014-03-14 11:08  范范小人物  阅读(164)  评论(0)    收藏  举报