SDcard相关操作

一:读写SDCard
1.写文件
//以SDCard根目录文件名称创建File对象
File file=new File("/mnt/sdcard","jb.txt");
//创建文件输出流
FileOutputStream outStream=new FileOutputStream(file);
//将内容写到文件中
outStream.write("hello android".getBytes());
//关闭输出流
outStream.close();
2.读文件
//以SDCard根目录文件名称创建File对象
File file=new File("/mnt/sdcard","jb.txt");
//创建文件输入流
FileInputStream inStream=new FileInputStream(file);
ByteArrayOutputStream outStr=new ByteArrayOutputStream();
int len=0;//标记读取文件的长度
byte[] buffer=new byte[1024];//存取每次读取的数据
while((len=inStream.read(buffer))!=-1){//当=-1说明读取到末尾
outStr.write(buffer,0,len);//把读取的数据写到字节数组中
}
outStr.close();
inStream.close();
byte[] data=outStr.toByteArray();
Toast.makeText(this,new String(data),1).show();
二:SDCard遍历
1.SDCard权限
<!--  在SDCard中创建与删除文件权限  -->
  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
- <!--  往SDCard写入数据权限 -->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
注意:放入的文件名称不要包含有中文
2.获取SDCard根目录
判断SDCard是否存在
Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
存在返回true,不存在返回false;
File sdCardDir=new File("/sdcard");
File sdCardDir=
    Environment.getExternalStorageDirectory();
3.递归遍历(文件过滤器)
a:遍历根目录,获取根目录想要的文件和所有的文件夹
b:遇到文件夹时调用方法自身进行递归遍历
c:如果是文件就保存
FileFilter filter=new FileFilter(){
@Override
public boolean accept(File f){
return f.isDirectory()||f.getName().matches("^.*?//.(3gp|mp4)$");
}
};
递归遍历获取文件夹下的文件
ArrayList<File> files=getFiles(file);
private ArrayList<File> getFiles(File file){
File files[]=sdCardDir.listFiles(filter);
for(File f:files){
if(f.isDirectory()&&f.canRead()){//如果是文件夹就递归遍历
     getFiles(f);
}else if(f.isFile()){//如果是文件就保存
    videlList.add(f);
}
}
    return videoList;
}
获取视频缩略图
Bitmap bitmap=ThumbnailUtils.createVideoThumbnail(file.getAbsolutePath(),
Thumbnails.MINI_KIND);
 
示例代码如下:
 public static ArrayList<VideoInfo> videoList=new ArrayList<VideoInfo>();
   
    public static FileFilter getFilter(){
     FileFilter filter=new FileFilter(){
   @Override
   public boolean accept(File file) {
    
    return file.isDirectory()||file.getName().matches("^.*?\\.(3gp|mp4)$");
   }
      
     };
     return filter;
    }
   
    public static ArrayList<VideoInfo> getVideos(File file,FileFilter filter){
     File[] files=file.listFiles(filter);
     for(File f:files){
      if(f.isDirectory()&&f.canRead()){
       getVideos(f,filter);
      }else if(f.isFile()){
       VideoInfo video=new VideoInfo();
       video.name=f.getName();//视频名称
       video.path=f.getPath();//视频路径
       video.size=dealSize(f.length());//视频大小
       //视频缩略图
       video.thumbnail=ThumbnailUtils.createVideoThumbnail(f.getAbsolutePath(), Thumbnails.MINI_KIND);
       videoList.add(video);
      }
     }
     return videoList;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值