開發手機App通常都會遇到想要儲存資料的,舉個例來說,像是

(圖片來源:http://docs.xamarin.com/guides/android/application_fundamentals/activity_lifecycle)

在android 生命週期中,OnReusme 可能需要把上次狀態讀取出來,在OnStop中因為App被中斷,所以必須把現在狀態寫起來

以方便還原,這時候就會用到這儲存的機制..

看一下官方文件: http://docs.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_5_-_practical_code_sharing_strategies


他直接連結到MSDN-Isolated Storage Overview for Windows Phone 那不就等於方便到爆炸,直接拿Windows Phone 的Code就可以用了..

來介紹一下今天範例..

按下儲存資料(btnSave1)的時候,就將EditView(editTextMain)資料寫入,

按下讀取資料(btnRead1)時就會將寫入的資料讀取出來,因為是範例,所以盡量單純點..直接來看Code

儲存資料:

var btnSave1 = FindViewById<Button>(Resource.Id.btnSave1);
btnSave1.Click += delegate
{

IsolatedStorageFile storageFiles = IsolatedStorageFile.GetUserStoreForApplication();

    //如果判斷已經有檔案就把它砍掉
    if (storageFiles.FileExists("UserInfo/data.txt"))
    {
        storageFiles.DeleteFile("UserInfo/data.txt");
    }
    //建立檔案夾
    storageFiles.CreateDirectory("UserInfo");
    StreamWriter fileWriter = new StreamWriter(new IsolatedStorageFileStream("UserInfo/data.txt", FileMode.OpenOrCreate, storageFiles));
    //寫入至目標
    fileWriter.Write(editTextMain.Text);
    fileWriter.Close();
    storageFiles.Dispose();
    Toast.MakeText(this, "Success Save", ToastLength.Short).Show();
};

讀取資料:

var btnRead1 = FindViewById<Button>(Resource.Id.btnRead1);
btnRead1.Click += delegate
{
    IsolatedStorageFile storageFiles = IsolatedStorageFile.GetUserStoreForApplication();
    StreamReader fileReader = null;
    //判斷檔案是否存在
    if (storageFiles.FileExists("UserInfo/data.txt"))
    {
        try
        {
            fileReader = new StreamReader(new IsolatedStorageFileStream("UserInfo/data.txt", FileMode.Open, storageFiles));
            var result = fileReader.ReadToEnd();
            Toast.MakeText(this, result, ToastLength.Long).Show();
            fileReader.Close();
        }
        catch(Exception ex)
        {
            Toast.MakeText(this, "Error:"+ex.Message, ToastLength.Long).Show();
        }
    }
    else
    {
        Toast.MakeText(this, "Error:" + "Sorry我找不到檔案喔!", ToastLength.Long).Show();
    }
};

結果:

是不是整個跟在Windows Phone 上面開發經驗一致..真的是很溫馨..

reference: 
 

[Xamarin] 透過 IsolatedStorageFile儲存資料(转帖)的更多相关文章

  1. [Xamarin.Android] 儲存資料於Windows Azure (转帖)

    在準備討論Xamarin.Android 如何整合GCM與Windows Azure來實作Push Notification之前, 先來了解如何將Xamarin.Android 與Windows Az ...

  2. [C#] 與Android共舞–透過GET方式傳資料給Server(含解決中文編碼問題) (转帖)

    上一篇文章分享了透過POST 方式傳資料回Server,這一篇來談談有關於透過GET的方式傳遞 首先,如我預期的一樣,透過網址傳遞,會產生編碼問題,這邊我就順代解掉,希望有碰到的人 可以不用為此煩惱. ...

  3. [Xamarin] 透過WebClient跟網路取得資料 (转帖)

    之前寫過一篇文章,關於在Android上面取得資料 透過GET方式傳資料給Server(含解決中文編碼問題) 我們來回顧一下 Android 端的Code: 有沒有超多,如果是在Xaramin下面,真 ...

  4. [Xamarin] 開啟另外一個Activity 並且帶資料 (转帖)

    每隻App是透過許多畫面所組成的,當然可能主畫面之外,都會有許多其他的頁面 再Android 設計中畫面會有配合的Activity 當然在這之前,最好事先了解一下,Android 關於生命週期的規劃 ...

  5. [Xamarin] 透過 intent-filter 來接管 http ,製作偽瀏覽器 (转帖)

    使用Android 的朋友一定對這畫面不陌生在開啟網址的時候,或是Youtube連結的時候,因為Android 發現,你手機安裝的App有哪些可以支援這些東西的瀏覽 所以,就可以使用甚麼東西來進行開啟 ...

  6. [Xamarin] 透過StartActivityForResult傳值回來(转贴)

    上一篇文章(開啟另外一個Activity 並且帶資料),提到了開啟一個新的Activity ,我們將值透過intent 帶到下個Activity 但是,如果我們開啟的Actrivity其實是有一個任務 ...

  7. [Xamarin] 透過Native Code呼叫 JavaScript function (转帖)

    今天我們來聊聊關於如何使用WebView 中的Javascript 來呼叫 Native Code 的部分 首先,你得先來看看這篇[Xamarin] 使用Webview 來做APP因為這篇文章至少講解 ...

  8. [转]SQL Server 安全性概論與無法刪除資料庫使用者的解決辦法

    經常有人來問我特定 SQL Server 資料庫裡的使用者無法刪除的問題,這問題其實跟 SQL Server 的安全性架構有很大關係,解決這個問題當然還是瞭解觀念的重要性大於知道如何解決問題.除了講解 ...

  9. [Xamarin] 關於Internal Storage ,存取App內部使用資料 (转帖)

    最近在開發App,會使用到必須要處理一些App所使用的資料,上網路查一下Android 得作法,包含我自己也實作了一下,可能是因為對Java || Android 不是很孰悉,常常錯在 java.la ...

随机推荐

  1. [在职软件工程]基于CMMI的软件工程教程

    第1章 软件工程基础 1.1软件工程基本原理 a.按照软件生命周期的阶段划分制定计划,严格依据计划进行管理 项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运行维护计划 b.坚持进行阶 ...

  2. HDU 1060 Leftmost Digit (数学log)

    题意:给定一个数n,让你求出n的n次方的第一位数. 析:一看这个n快到int极限了,很明显不能直接做,要转化一下.由于这是指数,我们可以把指数拿下来. 也就是取对数,设ans = n ^ n,两边取以 ...

  3. Web挖掘

    Web挖掘 Web挖掘的目标是从Web的超链接.网页内容和使用日志中探寻有用的信息.依据Web挖掘任务,可以划分为三种主要类型:Web结构挖掘.Web内容挖掘和Web使用挖掘.Web结构挖掘简单的说就 ...

  4. RocketMQ broker jvm 监控

    1. jps 获取要监控broker jvm 的进程ID jsp 2. nohup 输出监控日志 nohup jstat -gc -t [pid] [interval] -t 会在每一条记录前加时间戳 ...

  5. 深入浅出python系列(一)包与模块

    一.包 包是由一系列模块组成的,模块简单就说是一个.py文件.比如说,现在有一个数学功能组,可以计算加.减.乘.除.幂运算等等,假定把这几个功能分成几个模块,一个模块就是一个.py文件.由这些不同的模 ...

  6. [label][paypal] Paypal 支付页面的语言显示问题

    答复 Frank 通过 Email2014-11-12 02:01 上午 您好 感谢您联系PayPal商家技术支持中心. PayPal登陆页面的语言是PayPal服务器根据以下各种因素来自动判断的:1 ...

  7. Oracle EBS应用笔记整理 (转自IT++ flyingkite)

    ***************************************************** Author: Flyingkite Blog:   http://space.itpub. ...

  8. linux 用户/用户组添加修改删除(ubuntu/centos)

    一.LINUX(UBUNTU/CENTOS)用户添加删除修改 1.建用户: adduser web                             //新建web用户 useradd web  ...

  9. python day25 正则表达式

    2019.4.30 S21 day25笔记总结 正则表达式 1. 正则表达式 re模块:re模块本身只是用来操作正则表达式的,和正则本身没关系. 正则表达式:是一种规则 匹配字符串的规则. 为什么要有 ...

  10. hadoop 2.7.3伪分布式安装

    hadoop 2.7.3伪分布式安装 hadoop集群的伪分布式部署由于只需要一台服务器,在测试,开发过程中还是很方便实用的,有必要将搭建伪分布式的过程记录下来,好记性不如烂笔头. hadoop 2. ...