Android的SD卡文件读写的帮助类——FileHelper,以及查询SD卡是否存在及其容量的方法

举报
ShaderJoy 发表于 2021/12/29 23:29:43 2021/12/29
【摘要】 FileHelper.java是文件的帮助类,完成文件创建、删除、读。 在开始之前别忘了加权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  public class FileHelper { ...

FileHelper.java是文件的帮助类,完成文件创建、删除、读。

在开始之前别忘了加权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 


  
  1. public class FileHelper {
  2. private Context context;
  3. /** SD卡是否存在**/
  4. private boolean hasSD = false;
  5. /** SD卡的路径**/
  6. private String SDPATH;
  7. /** 当前程序包的路径**/
  8. private String FILESPATH;
  9. public FileHelper(Context context) {
  10. this.context = context;
  11. hasSD = Environment.getExternalStorageState().equals(
  12. android.os.Environment.MEDIA_MOUNTED);
  13. SDPATH = Environment.getExternalStorageDirectory().getPath();
  14. FILESPATH = this.context.getFilesDir().getPath();
  15. }
  16. /**
  17. * 在SD卡上创建文件
  18. *
  19. * @throws IOException
  20. */
  21. public File createSDFile(String fileName) throws IOException {
  22. File file = new File(SDPATH + "//" + fileName);
  23. if (!file.exists()) {
  24. file.createNewFile();
  25. }
  26. return file;
  27. }
  28. /**
  29. * 删除SD卡上的文件
  30. *
  31. * @param fileName
  32. */
  33. public boolean deleteSDFile(String fileName) {
  34. File file = new File(SDPATH + "//" + fileName);
  35. if (file == null || !file.exists() || file.isDirectory())
  36. return false;
  37. return file.delete();
  38. }
  39. /**
  40. * 读取SD卡中文本文件
  41. *
  42. * @param fileName
  43. * @return
  44. */
  45. public String readSDFile(String fileName) {
  46. StringBuffer sb = new StringBuffer();
  47. File file = new File(SDPATH + "//" + fileName);
  48. try {
  49. FileInputStream fis = new FileInputStream(file);
  50. int c;
  51. while ((c = fis.read()) != -1) {
  52. sb.append((char) c);
  53. }
  54. fis.close();
  55. } catch (FileNotFoundException e) {
  56. e.printStackTrace();
  57. } catch (IOException e) {
  58. e.printStackTrace();
  59. }
  60. return sb.toString();
  61. }
  62. public String getFILESPATH() {
  63. return FILESPATH;
  64. }
  65. public String getSDPATH() {
  66. return SDPATH;
  67. }
  68. public boolean hasSD() {
  69. return hasSD;
  70. }
  71. }

Environment 常用方法: 

* 方法:getDataDirectory()
解释:返回 File ,获取 Android 数据目录。
* 方法:getDownloadCacheDirectory()
解释:返回 File ,获取 Android 下载/缓存内容目录。
* 方法:getExternalStorageDirectory()
解释:返回 File ,获取外部存储目录即 SDCard
* 方法:getExternalStoragePublicDirectory(String type)
解释:返回 File ,取一个高端的公用的外部存储器目录来摆放某些类型的文件
* 方法:getExternalStorageState()
解释:返回 File ,获取外部存储设备的当前状态
* 方法:getRootDirectory()

解释:返回 File ,获取 Android 的根目录


  
  1. public void getSDPath()
  2. File sdDir = null
  3. File sdDir1 = null;
  4. File sdDir2 = null;
  5. boolean sdCardExist = Environment.getExternalStorageState() 
  6. .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在 
  7. if (sdCardExist) 
  8. sdDir = Environment.getExternalStorageDirectory();//获取跟目录 
  9. sdDir1 = Environment.getDataDirectory();
  10. sdDir2 =Environment.getRootDirectory();
  11. System.out.println("getExternalStorageDirectory(): "+sdDir.toString()); 
  12. System.out.println("getDataDirectory(): "+sdDir1.toString()); 
  13. System.out.println("getRootDirectory(): "+sdDir2.toString()); 


  
  1. //判断一个路径下的文件(文件夹)是否存在
  2. public class IsExist {
  3. public static void main(String[] args) {
  4. isExist("e://12");
  5. }
  6. /**
  7. *
  8. * @param path 文件夹路径
  9. */
  10. public static void isExist(String path) {
  11. File file = new File(path);
  12. //判断文件夹是否存在,如果不存在则创建文件夹
  13. if (!file.exists()) {
  14. file.mkdir();
  15. }
  16. }
  17. }
  18. //1.在SD卡上创建一个文件夹
  19. public class make extends Activity {
  20. /** Called when the activity is first created. */
  21. @Override
  22. public void onCreate(Bundle savedInstanceState) {
  23. super.onCreate(savedInstanceState);
  24. setContentView(R.layout.main);
  25. File sd=Environment.getExternalStorageDirectory();
  26. String path=sd.getPath()+"/notes";
  27. File file=new File(path);
  28. if(!file.exists())
  29. file.mkdir();
  30. }
Android 判断SD卡是否存在及容量查询的简单方法如下:

首先要在AndroidManifest.xml中增加SD卡访问权限


  
  1. <!-- 在SDCard中创建与删除文件权限 -->
  2. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
  3. <!-- 往SDCard写入数据权限 -->
  4. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
SD卡剩余空间


  
  1. public long getSDFreeSize(){
  2. //取得SD卡文件路径
  3. File path = Environment.getExternalStorageDirectory();
  4. StatFs sf = new StatFs(path.getPath());
  5. //获取单个数据块的大小(Byte)
  6. long blockSize = sf.getBlockSize();
  7. //空闲的数据块的数量
  8. long freeBlocks = sf.getAvailableBlocks();
  9. //返回SD卡空闲大小
  10. //return freeBlocks * blockSize; //单位Byte
  11. //return (freeBlocks * blockSize)/1024; //单位KB
  12. return (freeBlocks * blockSize)/1024 /1024; //单位MB
  13. }
SD卡总容量


  
  1. public long getSDAllSize(){
  2. //取得SD卡文件路径
  3. File path = Environment.getExternalStorageDirectory();
  4. StatFs sf = new StatFs(path.getPath());
  5. //获取单个数据块的大小(Byte)
  6. long blockSize = sf.getBlockSize();
  7. //获取所有数据块数
  8. long allBlocks = sf.getBlockCount();
  9. //返回SD卡大小
  10. //return allBlocks * blockSize; //单位Byte
  11. //return (allBlocks * blockSize)/1024; //单位KB
  12. return (allBlocks * blockSize)/1024/1024; //单位MB
  13. }


文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/8701920

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。