中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android I/0流操作文件的方法

發布時間:2021-06-18 09:06:14 來源:億速云 閱讀:176 作者:chen 欄目:開發技術

本篇內容主要講解“android I/0流操作文件的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“android I/0流操作文件的方法”吧!

目錄
  • 文件存儲

    • I/0流操作文件

  • 總結

    文件存儲

    文件存儲方式不受類型限制,可以將一些數據直接以文件的形式保存在設備中,例如文本文件、PDF ,音頻,圖片等。存儲類型復雜的數據時,通常采用文件存儲。Java提供一套完整的I/О流體系,通過I/О流可以非常方便地訪問磁盤中的文件,同樣Android 也支持I/O流方式來訪問手機等移動設備中的存儲文件。

    I/0流操作文件

    進行I/О流操作文件時,需要先獲得文件的輸人流和輸出流。在Android應用程序中,可以通過上下文環境Context對象提供的openFileInput()和 openFileOuput()兩個方法分別來獲得文件的輸入流和輸出流,這兩個方法的具體介紹如下。

    • FilelnputStream openFileInput(String name): 用于獲取應用程序的數據文件夾下指定name文件名的標準文件輸入流,以便讀取設備中的文件。

    • FileOutputStream openFileOuput(String name, int mode): 用于獲取應用程序的數據文件夾下指定name文件名的標準文件輸出流,以便將數據寫入設備的文件中。

    其中 openFileOutput()方法的第二個參數mode用于指定輸出流的模式,即打開文件進行操作的模式。Context類中提供了4個靜態常量用于表示不同的輸出模式,如下表所示。

    4種文件讀寫模式

    模式功能描述
    Context.MODE_PRIVATE私有模式,該模式所創建的文件都是私有文件,只能被應用本身所訪問。因此,該模式下所寫入的內容會覆蓋原來文件的內容
    Context. MODE_APPEND附加模式,該模式首先會檢查文件是否存在,若文件不存在,則創建新文件;若文件存在,則在原文件的末尾追加內容
    Context.MODE_WORLD_READABLE可讀模式,該模式的文件可以被其他應用程序讀取
    Context.MODE_WORLD_WRITABLE可寫模式,該模式的文件可以被其他應用程序讀寫

    除此之外,Context上下文對象還提供了一些方法來訪問應用程序的數據文件夾,如下表所示。

    訪問數據文件夾的方法

    方法功能描述
    File getDir(String name, int mode)在應用程序的數據文件夾下獲取或創建name對應的子目錄
    File getFilesDir()獲取應用程序的數據文件夾的絕對路徑
    String[] fileList()返回應用程序的數據文件夾下的所有文件
    boolean deleteFile( String name)刪除應用程序的數據文件夾下的指定文件

    下面通過代碼演示如何使用I/O流對文件進行讀寫操作

    創建xml布局文件

    android I/0流操作文件的方法

    android I/0流操作文件的方法

    xml布局代碼如下

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 線性布局,寬度高度適應屏幕變化,水平方向垂直 -->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <!-- 編輯輸入框,寬度適應線性布局變化,高度適應自己,設置顯示行數為四行 -->
        <EditText
            android:id="@+id/ediFileOut"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:lines="4"/>
        <!-- 保存文件按鈕,寬度,高度適應自己,按鈕文本顯示-->
        <Button
            android:id="@+id/btnWrite"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="保存文件"/>
        <!-- 編輯顯示框,寬度適應線性布局變化,高度適應自己,設置光標不可見,不可編輯,行數為4-->
        <EditText
            android:id="@+id/editFileIn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:cursorVisible="false"
            android:editable="false"
            android:lines="4"/>
        <!-- 讀取文件按鈕寬度,高度適應自己,按鈕文本顯示-->
        <Button
            android:id="@+id/btnRead"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="讀取文件"/>
    </LinearLayout>

    上述界面布局比較簡單,只包含兩個文本框和兩個按鈕,分別用于保存文件和讀取文件兩種操作。

    接著創建Activity程序

    android I/0流操作文件的方法

    android I/0流操作文件的方法

    activity代碼如下

    package com.example.wenjiancuncu;
    import android.content.Context;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.PrintStream;
    public class FileIOActivity extends AppCompatActivity {
        private EditText editFileIn, editFileOut; //聲明兩個文本框
        private Button btnRead, btnWrite; //聲明兩個按鈕
        final String FILE_NAME = "qstIO.txt"; //指定文件名
        @Override //重寫父類方法
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState); //調用父類方法
            setContentView(R.layout.activity_file_io); //設置布局
            //獲取兩個文本框
            editFileIn = (EditText) findViewById(R.id.editFileIn);
            editFileOut = (EditText) findViewById(R.id.ediFileOut);
            //獲取兩個按鈕
            Button btnRead = (Button) findViewById(R.id.btnRead);
            Button btnWrite = (Button) findViewById(R.id.btnWrite);
            //以匿名類的形式設置btnRead按鈕的事件監聽器
            btnRead.setOnClickListener(new View.OnClickListener() {
                @Override //重寫接口方法
                public void onClick(View v) {
                    //讀取指定文件中的內容,并在editFileIn文本框中顯示出來
                    editFileIn.setText(read());
                }
            });
            //以匿名類的形式設置btnWrite按鈕的事件監聽器
            btnWrite.setOnClickListener(new View.OnClickListener() {
                @Override //重寫接口方法
                public void onClick(View v) {
                    write(editFileOut.getText().toString()); //將editFileOut中的內容寫入文件中
                    editFileOut.setText(""); //清空editFileOut文本框中的內容
                }
            });
        }
        private String read() {
            try {
                FileInputStream fis = openFileInput(FILE_NAME); //打開文件輸入流
                byte[] buff = new byte[1024]; //定義一個字節緩存數組
                int hasRead = 0;
                StringBuilder sb = new StringBuilder(""); //創建可變字符串
                //讀取文件內容
                while ((hasRead = fis.read(buff)) > 0) {
                    //把字節數組轉化為字符串并添加到可變字符串中
                    sb.append(new String(buff, 0, hasRead));
                }
                fis.close(); //關閉文件輸入流
                return sb.toString(); //返回一個字符串
            }catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
        private void write(String content) {
            try {
                //以追加模式打開文件輸出流
                FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_APPEND);
                PrintStream ps = new PrintStream(fos); //將FileOutStream包裝成PrintStream
                ps.println(content); //輸出文件內容
                ps.close(); //關閉文件輸出流
                //使用Toast顯示保存成功
                Toast.makeText(FileIOActivity.this,"保存成功", Toast.LENGTH_LONG).show();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    上述代碼的核心操作就是文件的保存和讀取,其中read()和 write()兩個方法分別用于讀文件和寫文件操作;代碼中分別對btnRead 和 btnWrite按鈕設置了事件監聽器,并在事件處理方法中調用相應的read()或write()方法實現文件的讀取或保存。

    在AndroidMainfest中聲明Activity

    android I/0流操作文件的方法

    運行結果

    android I/0流操作文件的方法

    Android應用程序的數據文件默認保存在/data/data/包名/files目錄下。在 AndroidDevice Monitor的 File Explorer選項卡中,展開/data/data/com. 包名/files目錄,在該目錄下可以看到保存的qstIO.txt 數據文件,如下圖所示。

    android I/0流操作文件的方法

    android I/0流操作文件的方法

    android I/0流操作文件的方法

    到此,相信大家對“android I/0流操作文件的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    小金县| 恩施市| 河北省| 洪雅县| 囊谦县| 南岸区| 遵义县| 东阿县| 桐乡市| 凤凰县| 中宁县| 虎林市| 莫力| 福安市| 修文县| 海宁市| 连江县| 白水县| 宣武区| 珠海市| 台前县| 张家界市| 科技| 深泽县| 屏东市| 林芝县| 日土县| 石屏县| 鲁山县| 额尔古纳市| 吉木乃县| 葵青区| 柳州市| 栖霞市| 家居| 康定县| 拜泉县| 类乌齐县| 苏尼特左旗| 滦平县| 莒南县|