权限 android.permission.WRITE_EXTERNAL_STORAGE //访问SD卡
在Android文件操作中,首先第一步是获取SD卡的目录
有一个函数可以直接用
这是一个SD卡的路径 Environment.getExternalStorageState()
这里封装了一个文件操作的类,可以通过这个工具类将InputStream 直接变为想要的文件类型
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.os.Environment;
public class FileUtils {
private String SDPATH ; //存放SD卡的路径
public String getSDPATH() {
return SDPATH;
}
public FileUtils(){
//获取当前外部存储设备的目录,因为可能每台手机目录名不一样
// /SDCARD
SDPATH = Environment.getExternalStorageState();
}
/**
* 在前缀的后面创建文件夹
* @param dirName
* @return
*/
public File creatDir(String dirName){
File dir = new File(SDPATH+"/"+dirName) ;
dir.mkdir();
return dir;
}
/**
* 在某个目录下创建文件
* @param path
* @param fileName
* @return
* @throws IOException
*/
public File creatFile(String path,String fileName) throws IOException{
File file = new File(path+"/"+fileName) ;
file.createNewFile();
return file;
}
/**
* 判断文件是否存在
* @param 前缀
* @param fileName
* @return
*/
public boolean isFileExists(String 前缀,String fileName){
File file = new File(前缀+"/"+fileName) ;
return file.exists();
}
/**
* 将InputStream写入到某个目录的文件下,如果成功,返回当前文件
* @param path
* @param fileNmae
* @param input
* @return
*/
public File write2SDFromInput(String path,String fileName ,InputStream input){
File file = null;
OutputStream output = null ;
//先创建目录,在创建文件,再写入
try {
creatDir(path);//创建目录
file = creatFile(path, fileName); //创建文件
output = new FileOutputStream(file); //打开文件的输出流
//将输入流的东西搞到输出流中去,详细操作见javaIO操作
byte buffer[] = new byte[4*1024];
int temp;
while((temp = input.read(buffer,0,buffer.length))!=-1){
output.write(buffer,0,temp);
}
output.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
output.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return file;
}
}
当需要对文件进行修改的时候的操作
FileOutputStream fos = openFileOutput(FILE_NAME,MODE_APPEND);
//有5中模式
//MODE_PRIVTE 只能被当前程序读写
//MODE_APPEND 以追加的方式打开
//MODE_WORLD_READABLE 该文件允许被其他程序读取
//MODE_WORLD_WRITEABLE 该文件允许被其他文件读写