android 在本地建立文件夹,并将图片和音频保存在文件夹下,
<span style="font-size:18px;"> public void newFile() {
String fileName = "niannian";
String albumFileName = "picture";
File file = new File(Environment.getExternalStorageDirectory(),
fileName);
if (!file.exists()) {
file.mkdirs();
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
path = file.getPath();
File albumFile = new File(path, albumFileName);
if (!albumFile.exists()) {
albumFile.mkdir();
try {
albumFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
albumPath = albumFile.getAbsolutePath();
}</span>
首先是在本地创建一个niannian 文件夹,然后在文件夹下创建一个picture文件夹,首先通过File file = new File(Environment.getExternalStorageDirectory(),
fileName
)第一个参数是我们所要建立文件夹的根目录,然后第二个参数是我们所要创建文件的名字,但是此时并没有将文件建立出来,这只是一个我们创建好的目录,然后我们要判断这个目录是否存在,如果不存在的话,调用这个方法。
/*mkdirs()我们会将目录创建出来,即使是父目录不存在,也会将其创建出来,但是当我们调用<pre name="code" class="java">mkdir()方法的时候,我们是无法将父目录创建出来的,当我们把目录创建出来之后,我们就需要创建文件夹了,然后是获取文件路径,然后是在文件夹下创建一picture,然后就是讲我们的图片保存在文件夹下。*/
</pre><pre name="code" class="java"><pre name="code" class="java"> public void savePic(Bitmap bitmap) {
BufferedOutputStream os = null;
File file = new File (path+"/picture",Calendar.getInstance().getTimeInMillis()+".png");
if(!file.exists()){
file.delete();
}
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
os = new BufferedOutputStream(new FileOutputStream(file));
bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(os!=null){
try {
os.flush();
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
保存图片的方式:首先我们需要一个输出缓冲流,然后就是为当前需要保存的文件创立一个文件名,用当前的时间作为一个文件名,如果有相同的已经存在就将其删除,然后将其创建,然后初始化之间声明的缓冲流,缓冲流构造函数的参数是一个文件输出流,然后就是将图片进行压缩,压缩进这个缓冲流,然后在finally中释放资源,利用flush方法,释放掉缓冲流中未输出完的资源,然后将其将输出流关闭。
下面是录音文件的保存,这个我们在录制的时候就将其保存,下面是代码实例
public void playRecord() {
mediaRecorder = new MediaRecorder();
// 第1步:设置音频来源(MIC表示麦克风)
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 第2步:设置音频输出格式(默认的输出格式)
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// 第3步:设置音频编码方式(默认的编码方式)
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// 第4步:指定音频输出文件
mediaRecorder.setOutputFile(newFileName());
// 第5步:调用prepare方法
try {
mediaRecorder.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 第6步:调用start方法开始录音
mediaRecorder.start();
}
public String newFileName() {
SharedPreferences filePath = getSharedPreferences("filepath", MODE_PRIVATE);
mFileName = filePath.getString("path", null);
String s = new SimpleDateFormat("yyyy-MM-dd hhmmss").format(new Date());
return mFileName += "/music/" + s + ".3gp";
}
这里的文件路劲是我们之前创建文件的时候保存的,通过newFileName(),我们会得到我们所需要保存文件的文件路径和文件名,然后我们将文件名返回,通过方法setoutfile将文件输出即可,当然这可能会比较伤硬盘的,因为这是一个字节一个字节的读取,我们通过缓冲读取的效果会更好一些,这样我们的文件就被保存下来了。
之后将会更新如何将文件进行删除。