android-數據存儲之外部file存儲(sdcard)


一、基礎概要

  1、說明:

    1>應用程序運行用到的數據文件可以保存到sd卡中

    2>文件類型:任意

    3>數據保存路徑:

      路徑1:/storage/sdcard/Android/data/packageName/files     其它應用可以訪問,應用卸載時刪除

      路徑2:/storage/sdcard/xxx/    (表示自己創建的文件--xxx)     其它應用可以訪問,應用卸載時不會被刪除

  2、相關API

    Environment 操作sd卡工具類:

      ---得到sd卡狀態:Environment.getExternalStorageState()

          sd卡可讀寫的掛載狀態值:Environment.MEDIA_MOUNTED

      ---得到sd卡路徑:Environment.getExternalStorageDirectory()

 

    context.getExternalFilesDir():

      ---得到 /mnt/sdcard/Android/data/package_name/files/xxx.txt

    

    操作sd卡的權限:

      ---android.permission.WRITE_EXTERNAL_STORAGE  屬於寫的權限,但加上后也可讀。

二、開發步驟(路徑1)

1、寫數據

  1>判斷sd卡狀態,如果是掛載的狀態繼續

  2>獲取輸入文件名/內容

  3>得到指定文件的OutputStream:

    .得到sd卡下的files路徑

    .組成完整路徑

    .創建FileOutputStream

  4>寫數據

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   
      String fileName="xrk";
      String fileContent="我不是向日葵";
      String filesPath=getExternalFilesDir(null).getAbsolutePath();
      String filePath=filesPath+"/"+fileName;
      FileOutputStream fos=new FileOutputStream(filePath);
      fos.write(fileContent.getBytes("utf-8"));
      fos.close();
      Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
  }else{
   Toast.makeText(MainActivity.this, "保存是啊比", Toast.LENGTH_SHORT).show();
  }

2、讀數據:

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   
      String fileName="xrk";
      String filesPath=getExternalFilesDir(null).getAbsolutePath();
      System.out.println("iueiudshcs"+filesPath);
      String filePath=filesPath+"/"+fileName;
      FileInputStream fis=new FileInputStream(filePath);
      ByteArrayOutputStream baos=new ByteArrayOutputStream();
      byte[] buffer=new byte[1024];
      int len=-1;
      while((len=fis.read(buffer))!=-1){
       baos.write(buffer, 0, len);
      }
      String content=baos.toString();
      
      
      Toast.makeText(MainActivity.this, "讀取成功"+content, Toast.LENGTH_SHORT).show();
  }else{
   Toast.makeText(MainActivity.this, "讀取失敗", Toast.LENGTH_SHORT).show();
  }

 

三、開發步驟(路徑2) 

1、寫數據

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   
      String fileName="謝榮康.txt";
      String fileContent="我不是向日葵";
      //得到指定文件的輸出流
      String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();
      File file=new File(sdPath+"/atguigu");
      if (!file.exists()) {
    file.mkdirs();//創建文件夾
   }
      String filePath=sdPath+"/atguigu/"+fileName;
      String filesPath=getExternalFilesDir(null).getAbsolutePath();
      System.out.println("iueiudshcs"+filesPath);
      FileOutputStream fos=new FileOutputStream(filePath);
      
      fos.write(fileContent.getBytes("utf-8"));
      fos.close();
      Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
  }else{
   Toast.makeText(MainActivity.this, "保存是啊比", Toast.LENGTH_SHORT).show();
  } 

2、讀數據:

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   
      String fileName="謝榮康.txt";
      String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();
      String filePath=sdPath+"/atguigu/"+fileName;
      FileInputStream fis=new FileInputStream(filePath);
      ByteArrayOutputStream baos=new ByteArrayOutputStream();
      byte[] buffer=new byte[1024];
      int len=-1;
      while((len=fis.read(buffer))!=-1){
       baos.write(buffer, 0, len);
      }
      String content=baos.toString();
      fis.close();
      
      Toast.makeText(MainActivity.this, "讀取成功"+content, Toast.LENGTH_SHORT).show();
  }else{
   Toast.makeText(MainActivity.this, "讀取失敗", Toast.LENGTH_SHORT).show();
  }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM