先展出源代碼:
//打開圖庫
class B3 implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("crop", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, 2);
}
}
//點擊圖片之後進行響應
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if(requestCode == 2){
Uri uri=data.getData(); //獲取圖片的path
//ContentResolver cr = this.getContentResolver();
//bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));
String[] proj = {MediaStore.Images.Media.DATA};
//好像是android多媒體數據庫的封裝接口,具體的看Android文檔
@SuppressWarnings("deprecation")
Cursor cursor = managedQuery(uri, proj, null, null, null);
//按我個人理解 這個是獲得用戶選擇的圖片的索引值
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
//將光標移至開頭 ,這個很重要,不小心很容易引起越界
cursor.moveToFirst();
//最後根據索引值獲取圖片路徑
String path = cursor.getString(column_index);
System.out.println(path);
copyFile(path,newpath);
Toast.makeText(getApplicationContext(), "文件復制成功", Toast.LENGTH_SHORT).show();
}
}
}
//進行復制的函數
public void copyFile(String oldPath, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (!oldfile.exists()) { //文件不存在時
InputStream inStream = new FileInputStream(oldPath); //讀入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1024];
int length;
while ( (byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字節數 文件大小
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
}
catch (Exception e) {
System.out.println("復制單個文件操作出錯");
e.printStackTrace();
}
}
下面的是我的問題:
手機上顯示文件復制成功,但是從文件管理器上發現並沒有復制成功,這個復制的函數是我從網上找的,網上說newpath這個字符串是這個樣子的newPath String 復制後路徑 如:f:/fqf.txt 但是我的程序的newpath是newpath="/mnt/sdcard/美好時光",請大神指點迷津!!!
手機沒有f盤
路徑是 "/mnt/sdcard/美好時光"這種格式,mnt開頭