创建内部文件or文件夹 /data/data/包名/files/xxx
1.创建内部的文件夹 /data/data/包名/files/xxxdir
1.parent 表示内部路径为:/data/data/包名/files
//创建内部不同的文件
public FileOutputStream createInternalFile(String filename, File parent) throws IOException{
//参数1:文件名 // 参数2:path:/data/data/包名/files/
// 1,/data/data/包名/files/yyy
// 2,/data/data/包名/files/xxx/yyy
File newFile = null;
if(parent == null)
{
//如果路径不存在就创建,在path为:/data/data/包名/files 创建一个文件为filename.
foutstream = mContext.openFileOutput(filename, Context.MODE_PRIVATE);
}else{
//parent的路径为/data/data/包名/files/
String path = parent.getAbsolutePath() + "/" + filename; //获取内部默认文件路径
newFile = new File(path); //引用一个File的对象
if(!newFile.exists()){
newFile.createNewFile(); //创建路径为path的文件
}
foutstream = new FileOutputStream(newFile); //令文件为写的字符流
}
return foutstream; //返回文件为写的字符流
}
2.创建内部的文件夹 /data/data/包名/files/xxxdir
public File creatInternalDir(String dirName){
//2,/data/data/包名/files/xx
//获取到内部文件默认的存储的路径
File interalfile = mContext.getFilesDir();
String path = interalfile.getAbsolutePath();
File newDir = new File(path + "/" + dirName);
//File newDir = new File(interalfile, dirName);
if(!newDir.exists())
newDir.mkdir();
return newDir;
}
3.另个Activity中
EditText et_input_area = (EditText) findViewById(R.id.et_input_area);
FileOperation fop = new FileOperation(QueryActivity.this); //引用一个类
public void onClick(View v) {
//保存
//获取到输入框的内容
String content = et_input_area.getText().toString();
if(!content.isEmpty()){
// 创建note目录 /data/data/包/files/note
File noteParent = fop.creatInternalDir("note");
FileOutputStream fout = null;
try {
//1.创建文件 /data/data/包/files/note/mynote1.txt
//2.并返回mynote1.txt为写的文件流
fout = fop.createInternalFile("mynote1.txt", noteParent);
fout.write(content.getBytes()); //使输入框的内容以字节流的形式输入到fout文件中
fout.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//吐丝
Toast.makeText(this, "保存文件成功:" + noteParent.getAbsolutePath(), 1000).show();
}
创建外部文件 /data/data/包名/files/xxx.txt
———————————————————————————-
//在外部存储空间中创建一个文件夹和文件
public File createExternalFile(String filename) throws IOException{
File newFile = null;
//判断sd开是否存在
String state = Environment.getExternalStorageState();
if(state.equals(Environment.MEDIA_MOUNTED)){
Toast.makeText(mContext, "sd准备好了", 1000).show();
//获得外部存储器的第一层的文件对象
File downloadFile
=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
if(!downloadFile.exists())
downloadFile.mkdir();
//创建文件
String path = downloadFile.getAbsolutePath() + "/" + filename;
newFile = new File(path);
if(!newFile.exists()){
newFile.createNewFile();
// newFile.mkdir(); //当成文件夹也可以
}
}else{
//System.out.println("sd没有准备好");
Toast.makeText(mContext, "sd没有准备好", 1000).show();
}
return newFile;
}
-------------------------------------------------------------------------------------------------------------
2.另一个Activity中
// 演示如何在外部存储空间写文件/mnt/sdcard/Download
File file = fop.createExternalFile("mydown.c");
注意:Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 中填的参数
DIRECTORY_ALARMS //警报的铃声
DIRECTORY_DCIM //相机拍摄的图片和视频保存的位置
DIRECTORY_DOWNLOADS //下载文件保存的位置
DIRECTORY_MOVIES //电影保存的位置, 比如 通过google play下载的电影
DIRECTORY_MUSIC //音乐保存的位置
DIRECTORY_NOTIFICATIONS //通知音保存的位置
DIRECTORY_PICTURES //下载的图片保存的位置
DIRECTORY_PODCASTS //用于保存podcast(博客)的音频文件
DIRECTORY_RINGTONES //保存铃声的位置