Android学习笔记(文件篇)

原创 2016年08月29日 10:15:17

好记性不如烂笔头,仅以记之。


1:文件的删除delete方法

解:file如果是一个文件,调用delete方法可以成功删除,但是文件目录可能删除失败,这个是因为文件目录必须是空文件夹才能删除。如果文件目录不为空,可以使用递归的方式依次删除。

    public static void delete(File file) {  
        if (file.isFile()) {  
            file.delete();  
            return;  
        }  

        if(file.isDirectory()){  
            File[] childFiles = file.listFiles();  
            if (childFiles == null || childFiles.length == 0) {  
                file.delete();  
                return;  
            }  

            for (int i = 0; i < childFiles.length; i++) {  
                delete(childFiles[i]);  
            }  
            file.delete();  
        }  
     }

2.文件的读写安全

解:文件读可以并发,但是写必须独占,多线程的操作容易造成文件写入混乱,这时候需要给写动作加同步或者给文件加锁。第一种使用同步是最简单的方式,synchronized关键词即可,但是这也造成了文件使用的局限性,工程中需要使用某个文件时必须使用该方法,而且其他应用程序任然可以对该文件进行修改,不安全。第二种是使用文件锁,FileLock,这个可以保证该文件的访问限制。具体使用请戳–>JAVA文件锁


3.Android各个文件目录路径

public void test() {
        try {
            // assets:由于该目录随APK打包,安装之后是压缩包的形式,所以直接获取路径是找不到该文件的,只能以流的形式获取。
            InputStream assetsTestInputStream = context.getAssets().open("test.txt");
            // data/data/包名/cache
            File cacheFile = context.getCacheDir();
            // data/data/包名/files
            File filesFile = context.getFilesDir();
            // sdcard,内置
            String innerSDCardPath = getInnerSDCardPath();
            // sdcard,外置
            List<String> outSDCardPaths = getExtSDCardPath();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 获取内置SD卡路径
     * @return
     */
    public String getInnerSDCardPath() {  
        return Environment.getExternalStorageDirectory().getPath();  
    }

    /**
     * 获取外置SD卡路径
     * @return  应该就一条记录或空
     */
    public List<String> getExtSDCardPath()
    {
        List<String> lResult = new ArrayList<String>();
        try {
            Runtime rt = Runtime.getRuntime();
            Process proc = rt.exec("mount");
            InputStream is = proc.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line;
            while ((line = br.readLine()) != null) {
                if (line.contains("extSdCard"))
                {
                    String [] arr = line.split(" ");
                    String path = arr[1];
                    File file = new File(path);
                    if (file.isDirectory())
                    {
                        lResult.add(path);
                    }
                }
            }
            isr.close();
        } catch (Exception e) {
        }
        return lResult;
    }

4.java io

请戳–>Java IO最详解

版权声明:自己学习过程中的小小总结,欢迎批评指正及转载。

wsgi+webob+routes学习笔记-初学篇(中)

接上文: 可以看到wsgi已经在8090端口上建立了,用Rest client发个消息看下,可以看到已经收到了响应“Hello, World! I am sxmatch” 在以上程序中:方法d...
  • sxmatch
  • sxmatch
  • 2013年08月08日 10:47
  • 810

wsgi+webob+routes学习笔记-初学篇(下)

5      将application封装为class进行调用 为了进一步接近openstack中用法,将上文中的application函数可以封装为class进行调用,代码如下: __autho...
  • sxmatch
  • sxmatch
  • 2013年08月08日 19:38
  • 777

51822外设篇-1

看了51822好一阵子了,一直没来总结,抛开蓝牙不说,虽然51822只是一个M0内核的MCU,所用到寄存器 也不多,但是也挺有自己的特色的。首先51822把每个外设可操作的内容分为以下几个部分。 TA...
  • sun_haoming
  • sun_haoming
  • 2015年11月09日 15:41
  • 292

深度学习word2vec笔记之基础篇

深度学习word2vec笔记之基础篇
  • mytestmy
  • mytestmy
  • 2014年05月25日 16:00
  • 67545

wsgi+webob+routes学习笔记-初学篇(上)

1      初识WSGI: Wsgi是什么?Python Web服务网关接口? 可以先看下它不是什么:What WSGI¹ is not: a server, a python module, af...
  • sxmatch
  • sxmatch
  • 2013年08月08日 10:39
  • 1049

java基础精简汇总,个人学习笔记,看完或许你java基础就毕业了,

基本数据类型 也叫值类型。引用数据类型--引用类型 This。只能出现在方法中 ,this代表当前对象的引用。 匿名对象 : new 类名() Anonymous:匿名 Object 有索引...
  • boss_way
  • boss_way
  • 2017年10月25日 12:12
  • 101

Linux学习笔记之——起始篇

摘要:学习笔记目录、方便以后回顾、没有什么捷径可走、不断的记录、总结、练习、coding、coding。...
  • chenghuaying
  • chenghuaying
  • 2014年03月31日 16:47
  • 4730

React全家同学习之ES6之字符串的扩展

ES6加强了对Unicode的支持,并且扩展了字符串对象。 1、字符的Unicode表示法 JavaScript 允许采用 \uxxxx形式表示一个字符,其中“XXXX”表示字符的码点。但是这种表...
  • yangchunshang
  • yangchunshang
  • 2017年12月07日 20:29
  • 124

Android开发干货大全(持续更新)

Android开源项目: Android 开源项目分类汇总 GitHub上排名前100的Android开源库介绍 一个用于app指向性功能高亮的库 个人站点: 代码家 鸿洋 Andro...
  • zuolongsnail
  • zuolongsnail
  • 2016年03月10日 10:45
  • 6704

最近整理的Android学习笔记

今天记录一下这段时期学习android的笔记,这些笔记比较凌乱,但总归是有用的,以后什么时候有用,可以直接查询来使用。Android沉浸式状态栏如果想要我们的应用打开以后和状态栏的颜色保持一致,或者是...
  • mockingbirds
  • mockingbirds
  • 2015年07月18日 14:53
  • 3033
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android学习笔记(文件篇)
举报原因:
原因补充:

(最多只允许输入30个字)