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將文件輸出即可,當然這可能會比較傷硬盤的,因爲這是一個字節一個字節的讀取,我們通過緩衝讀取的效果會更好一些,這樣我們的文件就被保存下來了。
之後將會更新如何將文件進行刪除。