0
我一直在試圖將文件(音軌)從sdcard保存到內部存儲。 我已經與圖像與此代碼從sdacard保存音樂文件到內部存儲
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/fairyTale/app_data/ImgMsc
File directory = cw.getDir("ImgMsc", Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,Name+".png");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
這樣做現在這個效果很好,創建一個目錄,並保存我的位圖,但我想要做同樣的事情的音樂文件。
另外我想知道如何閱讀該文件(在應用程序中使用它)。
我已經使用這個代碼讀取位圖
File f=new File(path,name+".png");
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
return b;
附:代碼中,我已經盡力了,但似乎並沒有將生產權副本:
String filePath=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/"+name;
File music = new File(filePath);
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/fairyTale/app_data/ImgMsc
File directory = cw.getDir("ImgMsc", Context.MODE_PRIVATE);
File mypath=new File(directory,name+".mp3");
try {
InputStream is=new FileInputStream(music);
OutputStream os;
os = new FileOutputStream(mypath);
byte[] buff=new byte[1024];
int len;
while((len=is.read(buff))>0){
os.write(buff,0,len);
}
is.close();
os.close();
}
聽起來像你只需要找到在Java中執行文件複製操作(讀取緩衝區,寫入緩衝區,重複直到完成)的無數例子。 –
嗯,我有點經歷了很多,並且我一直在輸入流中發現文件沒有發現異常,我只是教會了它有一種特殊的方式,因爲它是用於圖像的。 – Pavle37
這意味着您的源代碼路徑錯誤。請注意,在最近的Android版本中,應用程序可能會在與ADB/DDMS等工具不同的路徑上看到外部存儲。 –