FileUtils类对SD卡上文件的一些操作(不全)

package paj.Utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.os.Environment; public class FileUtils { /*** * SD目录 */ private String SDCardRoot; //使用构造函数获得SD卡的目录 public FileUtils() { //得到当前外部存储设备的目录名 SDCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath(); } /*** * 在SD卡上创建文件 * @param fileName 文件名 * @param dir 文件存储目录 * @return 文件 * @throws IOException */ public File createFileInSDCard(String fileName , String dir) throws IOException{ //File.separator是系统有关的默认名称分隔符“/” File file = new File(SDCardRoot+ File.separator + dir + File.separator + fileName); //System.out.println(file); file.createNewFile(); return file; } /** * 在SD卡上创建目录 * @param dir 目录名称 * @return 返回目录 */ public File createSDDir(String dir) { File dirFile = new File(SDCardRoot +File.separator + dir + File.separator); //System.out.println(dirFile); dirFile.mkdirs(); return dirFile; } /*** * 判断文件是否存在 * @param fileNameString 文件名 * @param pathString 文件路径 * @return 存在返回true 不存在返回false */ public boolean isFileExist(String fileNameString , String path) { File file = new File(SDCardRoot + "/"+ path + File.separator + fileNameString); //System.out.println("isExist ->" + file); return file.exists(); } /*** * 将InputStream里面的数据写入到SD卡的文件中 * @param path 文件的路径 * @param fileNameString 文件名 * @param inputStream 数据流 * @return */ public File write2SDFromInput(String path , String fileNameString , InputStream inputStream) { File file = null; OutputStream outputStream = null; try { createSDDir(path); file = createFileInSDCard(fileNameString, path); outputStream = new FileOutputStream(file); //创建一个4*1024大小的缓冲区 byte buffer [] = new byte[4*1024]; int temp; //循环读取InputStream里的数据 while ((temp = inputStream.read(buffer)) != -1) { //把流按照buffer的大小写入到文件中 outputStream.write(buffer, 0, temp); } //提交缓冲区的内容 outputStream.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { outputStream.close(); } catch (Exception e2) { // TODO: handle exception e2.printStackTrace(); } } return file; } }  

使用上面的代码需要在mainfest.xml中加入如下的SDCcard操作权限代码

获取目录中的文件

	/**
	 * 获取目录文件
	 * @param dirString 文件目录
	 * @return List<Mp3Info>类型的文件列表
	 */
	public List<Mp3Info> GetLocalMp3List(String dirString)
	{
		//创建一个Mp3Info的List类型
		List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();
		//创建一个File对象
		String PATH = SDCardRoot + File.separator + dirString;
		File file = new File(PATH);
		//获取文件列表放入到File类型的数组中
		File[] files = file.listFiles();
		//循环读取MP3文件,并添加到List中
		for (int i = 0; i < files.length; i++) {
			if(files[i].getName().endsWith("mp3"))
			{
				Mp3Info mp3Info = new Mp3Info();
				mp3Info.setMp3Name(files[i].getName());
				mp3Info.setMp3Size(files[i].length() + "");
				mp3Infos.add(mp3Info);
			}
		}
		return mp3Infos;
	}
}


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 

你可能感兴趣的:(FileUtils类对SD卡上文件的一些操作(不全))