通用类_读取和写入SDCard

读写权限:

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

1.写入到SDCard

/**
  * 根据输入流写入到SD卡中的位置
  * 需要权限:
  * android.permission.MOUNT_UNMOUNT_FILESYSTEMS 在SD卡上创建文件的权限
  * android.permission.WRITE_EXTERNAL_STORAGE 写入SD卡的权限
  * @param is 输入流
  * @param dirpath sd卡中存放的文件的目录
  * @param targetFileName sd卡中存放的文件的名称
  */
 public static void writeToSDCard(InputStream is,String dirpath,String targetFileName) {
  // TODO Auto-generated method stub
  
  if((Environment.MEDIA_MOUNTED).equals(Environment.getExternalStorageState())){ //判断SDCard是否存在,是否可以具有访问SDCard的权限
   
   try 
   {
   	 String pathString;
   	 if(dirpath.equals("")){
     
    		pathString = Environment.getExternalStorageDirectory().getCanonicalPath();
    	}else{
     
    	pathString = Environment.getExternalStorageDirectory().getCanonicalPath() + "/"+ dirpath;
    	}
      
   	File filePath = new File(pathString); //创建目录   
    	if(!filePath.exists()){
    		 filePath.mkdir();
   	 }
      
    	File saveFile = new File(filePath, targetFileName);
    	FileOutputStream fos = new FileOutputStream(saveFile); //准备待写入的文件
    
    	byte[] buffer = new byte[1024];
    	int count;
    
    	while((count = is.read(buffer)) != -1){
     
     		fos.write(buffer, 0, count);
    	}
    	fos.close();
    	is.close();   
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
 }
}

                        FileOutputStream fos = new FileOutputStream(pathString + fileName);
                        fos.write(sb.toString().getBytes());
                        fos.close();is.close();

 


2.从SDCard中读取

public void readFromSDCard(String fileName) {
		// TODO Auto-generated method stub
		
		if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
			
			try {
				
				FileInputStream fis = new FileInputStream(Environment.getExternalStorageDirectory().getCanonicalPath()+ TARGET_DIR_NAME + TARGET_FILE_NAME);
  				
				InputStreamReader reader = new InputStreamReader(fis);
				BufferedReader buffer = new BufferedReader(reader);
				StringBuffer sb = new StringBuffer();
				String str;
				
				while(null != (str=buffer.readLine())){
					
					sb.append(str);
				}
				
				fis.close();
				
				System.out.println("读取的文件为: " + sb.toString());
                		}catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

项目地址:http://dl.vmall.com/c0aj2u4bc9

你可能感兴趣的:(android)