SD卡属于手机的外部存储设备
往SD卡写数据需要以下权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在mnt目录的sdcard目录下创建文件
//第一个参数是获取外部储存设备目录(即SD卡目录),第二个参数为文件名
File sdfile = new File(Environment.getExternalStorageDirectory(),"sdFile2.txt");
FileOutputStream fos = new FileOutputStream(sdfile);
fos.write("这是一个存储到sd卡中的文件".getBytes());
fos.close();
为了安全起见在创建文件之前是会先判断一下当前SD卡是否可用,代码如下
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))//该情况下SD卡是可用的
如果文件过大还得先判断一下当前SD卡所剩空间大小,以下代码是获取SD卡大小的
private TextView sdSize;
private void getSdSize(File path)
{
//File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlacks = stat.getBlockCount();
long availableBlocks =stat.getAvailableBlocks();
long totalSize = blockSize * totalBlacks;
long availableSize = availableBlocks * blockSize;
String totalStr = Formatter.formatFileSize(this, totalSize);
String availStr = Formatter.formatFileSize(this, availableSize);
sdSize.setText("总内存:"+totalStr + "\n" + "可用内存:" + availStr );
}
该方法参数path = Environment.getExternalStorageDirectory()时获取的是SD卡的存储空间大小
当path = Environment.getDataDirectory()时获取的是内存空间大小,即内部存储空间