德莱華 2015-07-22 01:17 采纳率: 44.4%
浏览 5875
已采纳

android将选择一张图片复制到指定的目录下

先展出源代码:
//打开图库
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/美好时光",请大神指点迷津!!!
  • 写回答

3条回答 默认 最新

  • danielinbiti 2015-07-22 01:36
    关注

    手机没有f盘
    路径是 "/mnt/sdcard/美好时光"这种格式,mnt开头

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 麒麟V10桌面版SP1如何配置bonding
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错
  • ¥15 java python或者任何一种编程语言复刻一个网页
  • ¥20 如何通过代码传输视频到亚马逊平台
  • ¥15 php查询mysql数据库并显示至下拉列表中
  • ¥15 freertos下使用外部中断失效
  • ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
  • ¥15 devserver配置完 启动服务 无法访问static上的资源
  • ¥15 解决websocket跟c#客户端通信