File存儲(內部存儲)

一旦程序在設備安裝后,data/data/包名/ 即為內部存儲空間,對外保密。
Context提供了2個方法來打開輸入、輸出流

FileInputStream openFileInput(String name)
FileOutputStream openFileOutput(String name, int mode)

public class MainActivity extends Activity {

    private TextView show;
    private EditText et;
    private String filename = "test";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        show = (TextView) findViewById(R.id.show);
        et = (EditText) findViewById(R.id.et);

        findViewById(R.id.write).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
                    //FileOutputStream是字節流,如果是寫文本的話,需要進一步把FileOutputStream包裝 UTF-8是編碼
                    OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
                    //寫
                    osw.write(et.getText().toString());
                    osw.flush();
                    fos.flush();
                    osw.close();
                    fos.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }); 
        
        findViewById(R.id.read).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    FileInputStream fis = openFileInput(filename);
                    //當輸入輸出都指定字符集編碼的時候,就不會出現亂碼的情況
                    InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
                    //獲取文件的可用長度,構建一個字符數組
                    char[] input = new char[fis.available()];
                    isr.read(input);
                    isr.close();
                    fis.close();
                    String readed = new String(input);
                    show.setText(readed);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });         
    }   
}

data/data/packagename/files/test就是我們寫入的文件

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,933評論 18 139
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,523評論 0 17
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 說一句筆直往前的再見, 我困在 你困意與夢境之間, 最飄渺、 柔軟與不可預期的會面。 一杯酒, 豪飲也無法滿足我余...
    愛倫同學閱讀 265評論 0 2
  • Many successful people are used to getting up early. For ...
    玲玲A閱讀 592評論 2 0