Environment是一个提供访问环境变量的类。
Environment.MEDIA_MOUNTED 表明对象是否存在并具有读/写权限
File.separator / 路径分隔符Environment.getExternalStorageDirectory() 返回值为sd卡文件件,而需要拼接字符串 所以getPath()
别忘了添加读写权限
一般用于BaseApplication里面.
模板性代码
package com.example.tuhuadmin.fanxinglei.widget;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Button;
import android.widget.TextView;
import com.example.tuhuadmin.fanxinglei.BaseActivity;
import com.example.tuhuadmin.fanxinglei.R;
import com.example.tuhuadmin.fanxinglei.utils.LogUtil;
import com.example.tuhuadmin.fanxinglei.utils.ToastUtil;
import java.io.File;
/**
* Created on 2016/8/2.
* Author:crs
* Description:初始化文件夹
*/
public class SdcardActivity extends BaseActivity {
private static final String TAG = "SdcardActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sdcard);
initCacheDir(this);
}
private void initCacheDir(Context context) {
String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
//进行路径的拼接
setCacheDir(Environment.getExternalStorageDirectory().getPath() + File.separator + "XunPiGe" + File.separator);
} else {
//data/data/包名/cache目录
setCacheDir(context.getCacheDir().getPath() + File.separator + "XunPiGe" + File.separator);
ToastUtil.show(context, "SD卡不存在,检查SD卡状态");
}
}
private void setCacheDir(String path) {
//传递进来一个文件夹路径(不是文件路径)
//创建一个文件,先判断文件是否存在,在判断是文件还是文件夹(你要创建文件还是文件夹)
File dir = new File(path);
if (dir.exists()) {
if (dir.isDirectory()) {
//满足要求
} else {
dir.delete();
if (!dir.mkdir()) {
//此方法有两个含义:创建文件夹以及是否成功创建
LogUtil.e(TAG, "Failed to make directory " + path);
}
}
} else {
if (!dir.mkdir()) {
//此方法有两个含义:创建文件夹以及是否成功创建
LogUtil.e(TAG, "Failed to make directory " + path);
}
}
}
}
文件操作常见api
构造方法:
public File(String pathname) : 通过文件路径 封装成 File对象
public File(String parent,String child): 通过父目录(文件夹)路径, 文件或者文件夹名称, 来 封装成File对象
public File(File parent,String child): 通过File对象 与 文件或者文件夹名称, 来 封装成File对象
创建功能:
//创建文件
public boolean createNewFile(): 创建文件
返回值: true, 创建一个新的文件
返回值: false, 当前File对象所表示的文件已经存在了, 不再创建新文件
//创建文件夹
public boolean mkdir() 创建文件夹
返回值: true, 创建一个新的文件夹
返回值: false, 当前File对象所表示的文件夹已经存在了, 不再创建新文件夹
public boolean mkdirs(): 创建多层文件夹
删除功能:
public boolean delete(): 删除文件 或者 空文件夹
注意: java程序删除 不经过回收站
想删除带有内容的文件夹 怎么办?
先把文件夹中的内容全删了, 再删除文件夹
重命名功能:
public boolean renameTo(File dest)
参数: dest 新名称
如果两个File对象, 同一个文件夹的时候, renameTo()重命名功能
如果两个File对象, 不是同一个文件夹的时候, renameTo()剪切 + 重命名功能
判断功能:
public boolean isDirectory(): File所代表的文件(文件夹) , 是否 为 文件夹
public boolean isFile() : 是否为文件
public boolean exists() : 文件是否存在
public boolean canRead() : 是否可读
public boolean canWrite() : 是否可写
public boolean isHidden() : 是否为 隐藏文件
获取功能:
public String getAbsolutePath(): 获取绝对路径
public String getPath() : 获取相对路径
public String getName() : 获取文件名称
public long length() : 获取文件的大小
public long lastModified() : 获取文件的最后修改时间
高级获取功能:
public String[] list() : 指定文件夹中 所有的文件与子文件夹的名称
public File[] listFiles() : 指定文件夹中, 所有的File对象