Android 创建文件及文件夹

说明

Android 中创建文件及文件夹,实际上用的都是基本的 java 语法,和普通的 java 程序不同的是:

如果要访问 SD 卡,需要配置权限,而且在 API 23 上,需要考虑运行时权限检查


写 SD 卡的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

创建/删除文件的权限:

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

创建单个文件 : File.createNewFile()

创建文件夹但不会创建缺失的父文件夹: File.mkdir()

创建文件夹并且创建缺失的父文件夹:File.mkdirs()

Demo

创建一个工具类 FileUtils,来统一提供创建文件和文件夹的功能

package com.yu.demos.utils;import android.util.Log;import java.io.File;import java.io.IOException;/** * 创建文件 和 文件夹 * Created by yu on 2016/8/21. */public class FileUtils {    private static final String TAG = "FileUtils";    public static final int FLAG_SUCCESS = 1;//创建成功    public static final int FLAG_EXISTS = 2;//已存在    public static final int FLAG_FAILED = 3;//创建失败    /**     * 创建 单个 文件     * @param filePath 待创建的文件路径     * @return 结果码     */    public static int CreateFile(String filePath) {        File file = new File(filePath);        if (file.exists()) {            Log.e(TAG,"The file [ " + filePath + " ] has already exists");            return FLAG_EXISTS;        }        if (filePath.endsWith(File.separator)) {// 以 路径分隔符 结束,说明是文件夹            Log.e(TAG,"The file [ " + filePath + " ] can not be a directory");            return FLAG_FAILED;        }        //判断父目录是否存在        if (!file.getParentFile().exists()) {            //父目录不存在 创建父目录            Log.d(TAG,"creating parent directory...");            if (!file.getParentFile().mkdirs()) {                Log.e(TAG,"created parent directory failed.");                return FLAG_FAILED;            }        }        //创建目标文件        try {            if (file.createNewFile()) {//创建文件成功                Log.i(TAG, "create file [ " + filePath + " ] success");                return FLAG_SUCCESS;            }        } catch (IOException e) {            e.printStackTrace();            Log.e(TAG,"create file [ " + filePath + " ] failed");            return FLAG_FAILED;        }        return FLAG_FAILED;    }    /**     * 创建 文件夹     * @param dirPath 文件夹路径     * @return 结果码     */    public static int createDir (String dirPath) {        File dir = new File(dirPath);        //文件夹是否已经存在        if (dir.exists()) {            Log.w(TAG,"The directory [ " + dirPath + " ] has already exists");            return FLAG_EXISTS;        }        if (!dirPath.endsWith(File.separator)) {//不是以 路径分隔符 "/" 结束,则添加路径分隔符 "/"            dirPath = dirPath + File.separator;        }        //创建文件夹        if (dir.mkdirs()) {            Log.d(TAG,"create directory [ "+ dirPath + " ] success");            return FLAG_SUCCESS;        }        Log.e(TAG,"create directory [ "+ dirPath + " ] failed");        return FLAG_FAILED;    }}

测试使用:

package com.yu.demos.activity;import android.os.Bundle;import android.os.Environment;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.TextView;import com.yu.demos.R;import com.yu.demos.utils.FileUtils;/** * 创建文件 及 文件夹的 demo * Created by yu on 2016/8/22. */public class CreateFileDemo extends AppCompatActivity {    private TextView tvResult;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_create_file);        tvResult = (TextView) findViewById(R.id.tv_result);    }    /**     * 创建单个文件     * @param view 创建文件按钮     */    public void createAFile(View view) {        //获取 SD 卡路径        String path = Environment.getExternalStorageDirectory().getAbsolutePath();        int result = FileUtils.CreateFile(path + "/demos/file/test.txt");        showResult(result);    }    /**     * 创建文件夹     * @param view 创建文件夹按钮     */    public void createADirectory(View view) {        //获取 SD 卡路径        String path = Environment.getExternalStorageDirectory().getAbsolutePath();        int result = FileUtils.createDir(path + "/demos/file/tmp/test");        showResult(result);    }    /**     * 显示结果     * @param result 结果码     */    private void showResult (int result) {        switch (result) {            case FileUtils.FLAG_SUCCESS:                tvResult.setText("result: create success");                break;            case FileUtils.FLAG_EXISTS:                tvResult.setText("result: already exist");                break;            case FileUtils.FLAG_FAILED:                tvResult.setText("result: create failed");                break;        }    }}

效果图

更多相关文章

  1. Android文件选择器的实例分享
  2. Android的程序解码与XML文件解码
  3. Android - 文件读写操作总结
  4. android 开发 文件读写应用案例分析
  5. android 资源文件命名规则 drawable mipmap一样的
  6. android判断文件类型是否为音频文件
  7. Android文件存储位置简述

随机推荐

  1. Android(安卓)View、ViewGroup
  2. gradle常用命令和查看错误
  3. 简述关于TextView的属性使用
  4. 玩转Android---组件篇---数据存储之SQLit
  5. android横竖屏和隐藏标题栏、状态栏总结
  6. Ubuntu下android studio如何使用ndk-buil
  7. android Tabhost控件的使用
  8. Android键值上报流程
  9. 大神之路:重学Android——Android多媒体Me
  10. 第一部分:开发前的准备-第二章 基础入门