一:读写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;
}
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;
}