(本博客的作用:可以使用源码在虚拟机里面的SD卡上添加图片(找到URL即可),可以用来操作SD卡上的文件)

以下是一个从网络下载图片的函数,放入URL即可:

 1 public Bitmap returnBitMap(String url) {    2            URL myFileUrl = null;    3            Bitmap bitmap = null;    4            try {    5             myFileUrl = new URL(url);    6            } catch (MalformedURLException e) {    7             e.printStackTrace();    8            }    9            try {   10             HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();   11             conn.setDoInput(true);   12             conn.connect();   13             InputStream is = conn.getInputStream();   14             bitmap = BitmapFactory.decodeStream(is);  15             is.close();   16            } catch (IOException e) {   17             e.printStackTrace();   18            }  19            if(bitmap == null){20             Log.d("RRRyy", "Null");21            }22            23            return bitmap;   24         } 

比如传入:"http://pica.nipic.com/2008-04-01/200841194113617_2.jpg",返回的是bitmap

下面是一个传入bitmap和文件名(文件名要有扩展名),将图片存入SD卡的类:

 1 import java.io.File; 2 import java.io.FileNotFoundException; 3 import java.io.FileOutputStream; 4 import java.io.IOException; 5  6 import android.graphics.Bitmap; 7 import android.os.Environment; 8 import android.util.Log; 9 10 /**11 * 保存图片的类12 * 13 * @author Administrator14 * 15 */16 public class PicSave {17 18         private final static String CACHE = "/Caochen";//存储的文件夹19 20         /**21          * 保存图片的方法22          * 保存到sdcard23          * @throws IOException24          */25         public void savePic(Bitmap b, String strFileName) {30                 String filePath = isExistsFilePath();31                 FileOutputStream fos = null;//流32                 File file = new File(filePath, strFileName);33                 if (file.exists()) {//如果存在,未处理34                 } else {35                         try {36                                 fos = new FileOutputStream(file);37                                 if (null != fos) {38                                         b.compress(Bitmap.CompressFormat.JPEG, 90, fos);//格式39                                         fos.flush();40                                         fos.close();41                                         Log.d("YYHU", "ok");42                                 }43                         } catch (FileNotFoundException e) {44                                 e.printStackTrace();45                         } catch (IOException e) {46                                 e.printStackTrace();47                         }48                 }49         }50 51         /**52          * 获取sd卡的缓存路径, 53          * 一般在卡中sdCard就是这个目录54          * 55          * @return SDPath56          */57         public static String getSDPath() {58                 File sdDir = null;59                 boolean sdCardExist = Environment.getExternalStorageState().equals(60                                 android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在61                 if (sdCardExist) {62                         sdDir = Environment.getExternalStorageDirectory();// 获取根目录63                 } else {64                         Log.e("ERROR", "没有内存卡");65                 }66                 return sdDir.toString();68         }69 70         /**71          * 获取缓存文件夹目录 如果不存在创建 否则则创建文件夹72          * 73          * @return filePath74          */75         private String isExistsFilePath() {76                 String filePath = getSDPath()+CACHE;77                 File file = new File(filePath);78                 if (!file.exists()) {79                         file.mkdirs();//建立文件夹80                 }81                 return filePath;82         }84 }

记住,为了正确运行上面两个类,一定要添加下面的权限:

1 <!-- 在SDCard中创建与删除文件权限 -->2 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  3 <!-- 往SDCard写入数据权限 -->4 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>5 <uses-permission android:name="android.permission.INTERNET"/>

为了更加清楚的知道SD卡文件夹的操作,我在源代码中加入如下输出:

 1 /** 2          * 获取sd卡的缓存路径,  3          * 一般在卡中sdCard就是这个目录 4          *  5          * @return SDPath 6          */ 7         public static String getSDPath() { 8                 File sdDir = null; 9                 boolean sdCardExist = Environment.getExternalStorageState().equals(10                                 android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在11                 if (sdCardExist) {12                         sdDir = Environment.getExternalStorageDirectory();// 获取根目录13                 } else {14                         Log.e("ERROR", "没有内存卡");15                 }16                 Log.d("a", sdDir.getAbsolutePath());//  /mnt/sdcard17                 Log.d("b", sdDir.toString());//      /mnt/sdcard18                 Log.d("c", sdDir.getPath());//       /mnt/sdcard19                 Log.d("d", sdDir.getParent());//      /mnt20                 Log.d("e", sdDir.getName());//       sdcard22                 Log.d("g", sdDir.toURI() + "");//     file:/mnt/sdcard23                 return sdDir.toString();24 25         }

输出如注释所示!

下面为了更好的理解,贴出在SD卡中寻找所有图片的代码:输入为根目录,比如:/mnt/sdcard

 1 import java.io.File; 2 import java.util.ArrayList; 3  4 import android.util.Log; 5  6 public class PicDir { 7      8     public void getFileDir(String opath){ 9           File f = new File(opath);10           File[] files = f.listFiles();11           if (files != null) {12           int count = files.length;       13           for (int i = 0; i < count; i++){14                File file = files[i];15                String filepath = file.getAbsolutePath();16                String path = file.getPath();17                  18                if (filepath.endsWith("jpg") || filepath.endsWith("gif")|| filepath.endsWith("bmp")19                                             || filepath.endsWith("png")) {20                  21                  ArrayList<String> myFilePath=new ArrayList<String>();22                  myFilePath.add(filepath);//这里每次扫描目录都会添加。23                  24                  for (String ll : myFilePath) {25                          Log.e("myFilePath", ll.toString());26                  }27            }28            else{ // 目标为文件夹,进入该文件夹继续遍历29                        if (file.isDirectory()) {30                            this.getFileDir(path);31                  }32                }33                continue;34               }35         }36     }37 }

更多相关文章

  1. 【Android(安卓)Developers Training】 99. 获取联系人详细信息
  2. Android使用AOP实现动态权限获取
  3. Android如何通过手机自动获取短信验证码
  4. Android(安卓)libphonenumber Demo 手机号码归属地
  5. android的json解析-详解
  6. 实现图片的圆角,倒影,转换
  7. Android设置通知Notification
  8. Android(安卓)9.0 sdCard文件读写
  9. drawable(hdpi,ldpi,mdpi)的区别

随机推荐

  1. Android的Binder的起源-android学习之旅(1
  2. Android 自定义阴影Shadow颜色,大小等样式
  3. Android 11 Beta 版正式发布!以及众多面向
  4. 对2016年android实习就业的一些看法
  5. Android的Parcelable用法
  6. Android中多次弹出相同Toast提示框长时间
  7. 导入的ANDROID 项目没有ANDROID的JAR包
  8. Android牟利之道--广告平台的介绍
  9. Android(安卓)NFC开发-实践篇
  10. android静音模式下仍可以播放媒体声音以