安卓中的外部存储ExternalStorage,工具类
2015-09-16 20:11
260 查看
<span style="font-size:18px;">注意:配置文件中加上权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></span> <span style="font-size:18px;">package com.example.day13_extrastroage.utils; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import android.annotation.SuppressLint; import android.content.Context; import android.os.Environment; public class SD_util { //外部存储是否可用F public static boolean isExtra() { boolean b=false; //获取外部存储状态与外部可读性状态比较,相等为true if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { b=true; } return b; } //写入数据到public外部存储 public static void writeStoragePublic(String content,String fileName) { //boolean issuccess=false; try { File file=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName); FileOutputStream fo=new FileOutputStream(file); fo.write(content.getBytes()); fo.flush(); fo.close(); } catch(Exception e) { e.printStackTrace(); } } //读取public外部存储中的数据 public static String readStoragePublic(String fileName) { StringBuffer sb=new StringBuffer(); try { File file=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName); FileInputStream fi=new FileInputStream(file); BufferedReader br=new BufferedReader(new InputStreamReader(fi)); String line=null; while((line=br.readLine())!=null) { sb.append(line); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } //写入数据到private外部存储 public static void writeStoragePrivate(Context context,String content,String fileName) { try { File file=new File(context.getExternalFilesDir(null), fileName); FileOutputStream fo=new FileOutputStream(file); fo.write(content.getBytes()); fo.flush(); fo.close(); } catch(Exception e) { e.printStackTrace(); } } //读取private外部存储中的数据 public static String readStoragePrivate(Context context,String fileName) { StringBuffer sb=new StringBuffer(); try { File file=new File(context.getExternalFilesDir(null), fileName); FileInputStream fi=new FileInputStream(file); BufferedReader br=new BufferedReader(new InputStreamReader(fi)); String line=null; while((line=br.readLine())!=null) { sb.append(line); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } //读取文件总长度 @SuppressLint("NewApi") public static long fileLength() { File file=new File(Environment.getExternalStorageDirectory(),""); long l=file.getTotalSpace(); return l; } //读取文件剩余大小 @SuppressLint("NewApi") public static long freeLength() { File file=new File(Environment.getExternalStorageDirectory(),""); long l=file.getFreeSpace(); return l; } //删除public文件 public static boolean removepublicFile(String fileName) { File file=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName); boolean b=file.delete(); return b; } //删除private文件 public static boolean removeprivateFile(Context context,String fileName) { File file=new File(context.getExternalFilesDir(null), fileName); boolean b=file.delete(); return b; } } </span></span></span>
使用工具类:
布局文件:
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/bt1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试外部存储是否可用" android:onClick="click"/> <Button android:id="@+id/bt2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试是否写入public外部存储" android:onClick="click"/> <Button android:id="@+id/bt3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试是否读出public外部存储数据" android:onClick="click"/> <Button android:id="@+id/bt4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试是否写入private外部存储" android:onClick="click"/> <Button android:id="@+id/bt5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试是否读出private外部存储数据" android:onClick="click"/> <Button android:id="@+id/bt6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试文件总长度" android:onClick="click"/> <Button android:id="@+id/bt7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试文件剩余大小" android:onClick="click"/> <Button android:id="@+id/bt8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除指定public文件" android:onClick="click"/> <Button android:id="@+id/bt9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除指定private文件" android:onClick="click"/> </LinearLayout></span> </span></span>
逻辑代码文件:
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">package com.example.day13_extrastroage; import com.example.day13_extrastroage.utils.SD_util; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void click(View v) { switch(v.getId()) { case R.id.bt1: { boolean b=SD_util.isExtra(); if(b) { Toast.makeText(getApplicationContext(),"外部存储可用", 0).show(); } else { Toast.makeText(getApplicationContext(),"外部存储不可用", 0).show(); } } case R.id.bt2: { SD_util.writeStoragePublic("welcome to China!","my.txt"); } break; case R.id.bt3: { String data=SD_util.readStoragePublic("my.txt"); Toast.makeText(getApplicationContext(),"读取的数据:"+data, 0).show(); } break; case R.id.bt4: { SD_util.writeStoragePrivate(getApplicationContext(), "you are beautiful!","my2.txt"); } break; case R.id.bt5: { String data=SD_util.readStoragePrivate(getApplicationContext(),"my2.txt"); Toast.makeText(getApplicationContext(),"读取的数据:"+data, 0).show(); } break; case R.id.bt6: { long l=SD_util.fileLength(); Toast.makeText(getApplicationContext(),"文件总长度:"+l, 0).show(); } break; case R.id.bt7: { long l=SD_util.freeLength(); Toast.makeText(getApplicationContext(),"文件剩余大小:"+l, 0).show(); } break; case R.id.bt8: { boolean b=SD_util.removepublicFile("my2.txt"); if(b) { Toast.makeText(getApplicationContext(),"删除成功", 0).show(); } else { Toast.makeText(getApplicationContext(),"删除失败", 0).show(); } } break; case R.id.bt9: { boolean b=SD_util.removeprivateFile(getApplicationContext(),"my2.txt"); if(b) { Toast.makeText(getApplicationContext(),"删除成功", 0).show(); } else { Toast.makeText(getApplicationContext(),"删除失败", 0).show(); } } break; } } }</span> </span></span>
相关文章推荐
- zoj1729最小表示法(模板题)
- 用宏定义实现函数值互换
- Android 4.4 kitkat以上及以下根据uri获取路径的方法
- 迷你MVVM框架 avalonjs1.5.2 发布
- MySQL性能优化的最佳20+条经验
- Java "==","equals",hashcode
- 利用ORACLE实现数据抽样(sample block)
- UIButton
- samba详解
- 前端性能优化(六)
- css取消div蹭上的鼠标点击事件
- 自己写的下载数据的方法(GET和POST两种)(已经封装)
- Java自学手记——Java中的关键字
- MyBatis学习总结(六)——调用存储过程
- Linux进程查看,管理工具
- UIView
- Hibernate主配置文件
- Android启动服务播放音乐(两种启动方式)
- 网易游戏2016校园招聘“游戏研发&平台开发”在线笔试——B题 Best Compression Algorithms
- 各种子序列的动态规划求法与优化