Android——文件管理

一、内置内存:

例子:

//写一个 file文件夹下的 文件
public void outputClick(View v) {
    try {
        FileOutputStream fileOutput = this.openFileOutput("aa.txt", MODE_APPEND);
        String s = "我是中国人";
        byte[] bytes = s.getBytes();
        fileOutput.write(bytes, 0, bytes.length);
        fileOutput.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
//读取一个 file文件夹下的文件
public void inputClick(View v) {
    try {
        FileInputStream fileInput = this.openFileInput("aa.txt");
        StringBuffer sb = new StringBuffer();
        byte[] bytes = new byte[1024];
        int len;
        while ((len = fileInput.read(bytes)) != -1) {
            sb.append(new String(bytes, 0, len));
        }
        fileInput.close();
        Toast.makeText(MainActivity.this, "输出:" + sb.toString(), Toast.LENGTH_SHORT).show();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
// 读取一个 Raw文件夹下的 文件
public void inputRawClick(View w) {
    try {
        InputStream inputStream = getResources().openRawResource(R.raw.aaa);
        StringBuffer sb=new StringBuffer();
        int len;
        byte[] bytes = new byte[1024];
        while ((len = inputStream.read(bytes)) != -1) {
            sb.append(new String(bytes,0,len));
        }
        inputStream.close();
        Toast.makeText(MainActivity.this, "---"+sb, Toast.LENGTH_SHORT).show();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
// 写一个  缓存临时文件
public void outpurChareClick(View v)
{
    try {
        File temp= File.createTempFile("temp",null,getCacheDir());
        FileOutputStream f=new FileOutputStream(temp);
        PrintStream ps=new PrintStream(f);
        ps.print("我可是要成为编程王的男人");
        ps.close();
        f.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

其他方法:

getFilesDir() 获取私有文件目录   /data/data/包名/files

getDir(name,Model)创建(或者打开已存在的)目录    /data/data/包名/app_<文件名>

deleteFile(name)删除私有目录的文件  /data/data/包名/files

fileList()获取  /data/data/包名/files目录的文件名数组


二、外置内存:

1.检测是否有外置内存卡

//检测手机中是否有外置内存卡
public void isSDCardClick(View v) {
    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
    {
        Toast.makeText(MainActivity.this, "有内存卡", Toast.LENGTH_SHORT).show();

        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_READ_ONLY)){
            Toast.makeText(MainActivity.this, "内存卡只读", Toast.LENGTH_SHORT).show();
        }else
        {
            Toast.makeText(MainActivity.this, "没有内存卡", Toast.LENGTH_SHORT).show();
        }
    }

2. 获取sdcard路径

Environment.getExternalStorageDirectory().getPath() 

3.访问android内置的文件夹

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS). //访问sdcard下面的downloads文件夹


//API 19以后才能使用 

4.在SD卡中写入一个私有文件 

//在外置内存卡上 写入一个私有文件
public void outputSDcardPrivateFileClick(View v) {
    //获取sd卡 私有文件夹路径
    File file = getExternalFilesDir(null); //为空表示默认
    if(file != null){//这个方法不一定都能得到,所以在使用之前要先判断 是否为null
        try {
            FileOutputStream out=new FileOutputStream(file+"/zlm.txt");
            PrintStream ps=new PrintStream(out);
            ps.print("zlm is a good boy");
            ps.close();
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
5.在SD卡中写入一个私有缓存文件

//在外置内存卡上 写入一个私有缓存文件
public void outputSDcardPrivateCacheFileClick(View v)
{
    try {//getExternalCacheDir 获取私有缓存文件夹路径
        File temp=File.createTempFile("zlm",null,getExternalCacheDir());
        if(temp != null){//这个方法不一定都能得到,所以在使用之前要先判断 是否为null

            FileOutputStream out=new FileOutputStream(temp);
            PrintStream ps=new PrintStream(out);
            ps.print("zlm is a good boy,这是缓存私有文件");
            ps.close();
            out.close();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}


6.查询剩余空间

getFreeSpace()-------返回剩余空间

getTotalSapce()------返回总空间

不需要每次都进行判断 也未必知道要存入的数据的多大的  所以能catch这个IOException就行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值