Android(安卓)— 创建文件及文件夹
16lz
2021-12-29
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; } }}
效果图
更多相关文章
- Android入门教程(四)之------Android工程目录结构介绍
- Android创建sdcard
- Android的程序解码与XML文件解码
- 转-Android(安卓)Studio *.jar 与 *.aar 的生成与*.aar导入项目
- Android文件选择器的实例分享
- Android读写XML(下)——创建XML文档
- Android(安卓)studio 中创建AIDL Service
- Android两种数据库操作方式入门介绍
- NPM 和webpack 的基础使用