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最详解

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

Android学习笔记之AndroidManifest.xml文件解析

Android学习笔记之AndroidManifest.xml文件解析 一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。它位...
  • n141617
  • n141617
  • 2011年06月22日 09:48
  • 324

Android学习笔记(2):看一个XML文件

我们来开始第一个Android应用  使用Android Studio开发Android应用大致分为如下3步: 1. 创建一个Android项目或Android模块。 2. 在XML布局本件中定义应用...

Android学习笔记(5)---关于获取File路径、文件过滤

注:基于开发的项目:LearningFlash 一些代码段 1、变量的声明 private String mRoot = "";//根路径 private String[] fileN...
  • Moruna
  • Moruna
  • 2012年08月02日 09:46
  • 3379

Android学习笔记(四六):互联网通信-文件下载

在Android 2.3引入了DownloadManager可以处理复杂的文件下载,包括检查用户是否有数据联系(WIFI或者移动数据),当用户从一个有数据连接的地方移动到无连接的地方(例如离开了wif...

android 生成签名文件与APK打包(学习笔记)

生成签名文件是使用JDK bin目录下keytool工具: 1.进入bin目录 C:\Program Files (x86)\Java\jdk1.7.0_67\bin>keytool -genkey ...

Android学习笔记(四三):文件访问

之前我们学习了通过preference和SQLite数据库进行数据存储,也可以通过文件方式。文件可以是在应用打包时预置,也可以是应用所生成。 文件访问有两种方式:一:静态数据的文件可以防止在res/...

Android学习笔记——NDK中C++标准库、STL的配置;Include其他头文件

http://cherishlc.iteye.com/blog/1758643 以下所有是基于Eclipse的,使用命令行的绕道。  1、STL的使用,以stlport为例  官方的...

Androin学习笔记四十九:android文件管理器的源码实现

出处:http://blog.csdn.net/xieyan0811/article/details/6588889 1.     Android文件管理器介绍 android系统并不自带...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android学习笔记(文件篇)
举报原因:
原因补充:

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