一起Talk Android吧(第二百一十七回:Android中的數據存儲之文件一)

各位看官們大家好,上一回中咱們說的是Android中數據存儲概述的例子,這一回咱們說的例子是數據存儲之文件。閒話休提,言歸正轉。讓我們一起Talk Android吧!

看官們,我們在這一回中介紹文件這種數據存儲方式。文件存儲的內容,我們可以使用Java提供的API來進行,下面是向文件寫入內容的操作步驟,請大家參考:

  • 1.獲取文件寫權限,在代碼進行申請,同時需要在配置文件中添加權限聲明;
 //在manifest文件中添加文件讀寫權限
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 //讀寫文件需要先申請權限
    public void requestPermisson() {
        if(ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            Log.i(TAG, "requestPermisson: ");
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
        }else {
            WriteDataByJava();
        }
    }

    //用戶選擇權限後,對選擇做處理
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode == 1) {
            if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Log.i(TAG, "onRequestPermissionsResult: Permission approved");
                WriteDataByJava();
            }else {
                Log.i(TAG, "onRequestPermissionsResult: Permission denied");
                Toast.makeText(getApplicationContext(),"Permission denied",Toast.LENGTH_LONG).show();
            }
        }
    }
    
  • 2.定義一個文件名稱,名稱中需要包含文件所在的路徑,不然無法存放;
  • 3.使用步驟2中的文件名創建一個File類型的對象;
  • 4.使用File對象創建一個空的文件;創建前需要判斷文件路徑是否存在,如果存在就創建文件,否則不創建文件;
  • 5.使用File對象創建輸出流,注意處理異常;
  • 6.把輸出流轉換爲可以輸出的緩衝流;
  • 7.使用緩衝流的write方法把內容寫入文件;注意,該方法是重載方法,可以把多種類型的數據寫入文件,我使用了簡單的String類型;
  • 8.關閉緩衝流,關閉也要處理異常。關閉操作可以放在上一步驟的終結器(finally)中顯得代碼整潔;

看官們,爲了代碼整潔,我們把步驟2到8的內容都放到了一個方法中,下面是該方法的代碼,請大家參考:

 public void WriteDataByJava(){
        File file = new File(mFileName);
        String content = "Hello";
        FileOutputStream outputStream = null;
        BufferedWriter bufferedWriter = null;

        Log.i(TAG, "WriteDataByJava: ");
        //檢查文件路徑是否已經存在,如果存在就創建文件
        if(file != null && file.getParentFile() != null) {
            if (file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
        }else {
            Log.i(TAG, "WriteDataByJava: File Created Failed");
            return;
        }

        try {
            outputStream = new FileOutputStream(file);
        }catch (IOException e) {
            e.printStackTrace();
        }

        //通過輸出流給文件寫入內容
        if(outputStream != null) {
            bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
            try {
                bufferedWriter.write(content);
            }catch (IOException e) {
                e.printStackTrace();
            }finally {
                if(bufferedWriter != null) {
                    try {
                        bufferedWriter.close();
                    }catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    

各位看官,關於Android中數據存儲之文件的例子咱們就介紹到這裏,欲知後面還有什麼例子,且聽下回分解!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章