首页 > 代码库 > Android开始之 扩展存储sdcard
Android开始之 扩展存储sdcard
//访问sdcar需要授权WRITE_EXTERNAL_STORAGE
1 //---------------------写----------------------- 2 public boolean saveFileToSdcard(String fileName, byte[] data) { 3 boolean flag = false; 4 // 先判断sdcard的状态; 5 String state = Environment.getExternalStorageState(); 6 // 表示sdcard挂载在手机上,并且可以读写 7 FileOutputStream outputStream = null; 8 // 获得sdcard的根目录/mnt/sdcard/..... 9 File root = Environment.getExternalStorageDirectory(); 10 11 if (state.equals(Environment.MEDIA_MOUNTED)) { 12 // File file =new File(root, fileName);//在sdcard根目录上创建一个文件 13 File file = new File(root.getAbsolutePath() + "/txt");// 创建一个TXT文件夹再存 14 if (!file.exists()) { 15 file.mkdirs(); 16 } 17 try { 18 // outputStream=new FileOutputStream(file); 19 outputStream = new FileOutputStream(new File(file, fileName)); 20 outputStream.write(data, 0, data.length); 21 flag = true; 22 } catch (Exception e) { 23 // TODO: handle exception 24 e.printStackTrace(); 25 } finally { 26 if (outputStream != null) { 27 try { 28 outputStream.close(); 29 } catch (Exception e2) { 30 // TODO: handle exception 31 e2.printStackTrace(); 32 } 33 34 } 35 36 } 37 38 } 39 return flag; 40 }
-------------测试------------------------
1 public void save(){ 2 FileService service=new FileService(); 3 service.saveFileToSdcard("aa.txt", "zy520".getBytes()); 4 5 }
----------------------------------
1 //----------------------------------读文件内容----------------------- 2 public String readContextFromSdcard(String fileName) { 3 File root=Environment.getExternalStorageDirectory(); 4 FileInputStream inputStream=null; 5 ByteArrayOutputStream outputStream=new ByteArrayOutputStream(); 6 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { 7 File file = new File(root.getAbsolutePath() + "/txt/"); 8 File file2=new File(file, fileName); 9 int len=0; 10 byte[]data=http://www.mamicode.com/new byte[1024]; 11 12 13 if (file2.exists()) { 14 try { 15 inputStream=new FileInputStream(file2); 16 while((len=inputStream.read(data))!=-1){ 17 outputStream.write(data, 0, len); 18 19 20 } 21 return new String(outputStream.toByteArray()); 22 } catch (Exception e) { 23 // TODO: handle exception 24 e.printStackTrace(); 25 }finally{ 26 if (inputStream!=null) { 27 try { 28 inputStream.close(); 29 } catch (Exception e2) { 30 // TODO: handle exception 31 e2.printStackTrace(); 32 } 33 34 } 35 } 36 37 } 38 } 39 40 return null; 41 }
------------测试--------------------
1 public void read(){ 2 FileService service=new FileService(); 3 String msg =service.readContextFromSdcard("aa.txt"); 4 System.out.println("---->>"+msg); 5 6 7 }
-------------下载图片到sdcard再从sdcard中读出来----------------------------
1 public class ImageCache { 2 public static String saveImageCache(String fileName, byte[] data) { 3 4 File file = Environment.getExternalStorageDirectory(); 5 FileOutputStream outputStream = null; 6 if (Environment.getExternalStorageState().equals( 7 Environment.MEDIA_MOUNTED)) { 8 try { 9 outputStream = new FileOutputStream(new File(file, fileName)); 10 outputStream.write(data, 0, data.length); 11 12 return file.getAbsolutePath()+"/"+fileName; 13 } catch (Exception e) { 14 // TODO: handle exception 15 e.printStackTrace(); 16 }finally{ 17 if (outputStream!=null) { 18 try { 19 outputStream.close(); 20 } catch (Exception e2) { 21 // TODO: handle exception 22 e2.printStackTrace(); 23 } 24 } 25 } 26 } 27 28 return null; 29 } 30 }
---------------------------------------------
1 public class MainActivity extends ActionBarActivity { 2 private Button button; 3 private ImageView imageView; 4 private ProgressDialog dialog; 5 private String path ="https://www.baidu.com/img/bd_logo1.png"; 6 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.fragment_main); 11 dialog = new ProgressDialog(this); 12 dialog.setTitle("提示"); 13 dialog.setMessage("load....."); 14 button = (Button) findViewById(R.id.button1); 15 imageView = (ImageView) findViewById(R.id.imageView1); 16 button.setOnClickListener(new View.OnClickListener() { 17 18 @Override 19 public void onClick(View v) { 20 // TODO Auto-generated method stub 21 new MyTask().execute(path); 22 } 23 }); 24 25 } 26 27 class MyTask extends AsyncTask<String, Void, byte[]> { 28 private String imageName; 29 @Override 30 protected void onPreExecute() { 31 // TODO Auto-generated method stub 32 super.onPreExecute(); 33 dialog.show(); 34 } 35 36 @Override 37 protected byte[] doInBackground(String... params) { 38 // TODO Auto-generated method stub 39 try { 40 String name=params[0]; 41 //截取图片名称:bd_logo1.png 42 imageName=name.substring(name.lastIndexOf("/")+1, name.length()); 43 } catch (Exception e) { 44 // TODO: handle exception 45 } 46 47 return HttpUtils.getImage(params[0]); 48 } 49 50 @Override 51 protected void onPostExecute(byte[] result) { 52 // TODO Auto-generated method stub 53 super.onPostExecute(result); 54 if (result != null) { 55 Bitmap bitmap=BitmapFactory.decodeByteArray(result, 0, result.length); 56 imageView.setImageBitmap(bitmap); 57 ImageCache.saveImageCache(imageName, result); 58 59 } else { 60 imageView.setImageResource(R.drawable.ic_launcher); 61 } 62 63 dialog.dismiss(); 64 } 65 66 }
1 public class HttpUtils { 2 public static byte[] getImage(String path){ 3 byte[]data=http://www.mamicode.com/null; 4 HttpClient httpClient=new DefaultHttpClient(); 5 HttpPost post =new HttpPost(path); 6 try { 7 HttpResponse response=httpClient.execute(post); 8 9 if (response.getStatusLine().getStatusCode()==200) { 10 data=http://www.mamicode.com/EntityUtils.toByteArray(response.getEntity()); 11 } 12 } catch (Exception e) { 13 // TODO: handle exception 14 e.printStackTrace(); 15 }finally{ 16 httpClient.getConnectionManager().shutdown(); 17 } 18 19 20 return data; 21 } 22 }
、、------------------------------------------------------
1 //---------------保存指定的SDcard目录---------- 2 public void saveFileToSdcardBySuff(String fileName,byte [] data){ 3 4 //保存文件的目录 5 File file=null; 6 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { 7 if (fileName.endsWith(".mp3")) { 8 file=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC); 9 10 }else if (fileName.endsWith(".jpg")||fileName.endsWith(".png")||fileName.endsWith(".gif")) { 11 file=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 12 }else if (fileName.endsWith(".mp4")||fileName.endsWith(".3gp")) { 13 file=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES); 14 15 }else { 16 file=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 17 } 18 } 19 FileOutputStream outputStream=null; 20 try { 21 outputStream=new FileOutputStream(new File(file,fileName)); 22 outputStream.write(data,0, data.length); 23 } catch (Exception e) { 24 // TODO: handle exception 25 e.printStackTrace(); 26 }finally{ 27 try {if (outputStream!=null) { 28 outputStream.close(); 29 } 30 31 } catch (Exception e2) { 32 // TODO: handle exception 33 } 34 35 } 36 37 }
------------------------------测试---------------------------------------
1 public void save2(){ 2 FileService service=new FileService(); 3 service.saveFileToSdcardBySuff("aa.txt", "zy520".getBytes()); 4 5 } 6
---------------------------删除----------------------------------------
public boolean deleteFileFromSdcard(String folder,String fileName){ boolean flag=false; File file=Environment.getExternalStorageDirectory(); if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File exitfile=new File(file.getAbsolutePath()+"/"+folder+"/"+fileName); if (exitfile.exists()) { flag=exitfile.delete(); } } return flag; }
----------------测试-------------------------
1 public void del(){ 2 FileService service=new FileService(); 3 boolean flag =service.deleteFileFromSdcard("txt","aa.txt"); 4 System.out.println("---->>"+flag); 5 6 7 }
Android开始之 扩展存储sdcard
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。