Windows Phone 8 and Storage - Roaming Data (Application Data) |
Windows Phone 8 and Storage - Roaming Data (Application Data) สำหรับการจัดเก็บข้อมูลแบบ Roaming บน Windows Phone 8 สามารถจัดเก็บข้อมูลประเภทต่าง ๆ ได้เหมือนกับ Local Data เช่น ตัวแปรแบบ Settings , ตัวแปรแบบ Object และไฟล์ประเภทต่าง ๆ ได้ทุกประเภท แต่ Roaming Data จะเป็นการจัดเก็บข้อมูลในรูปแบบของ Cloud Server ซึ่งแบบ Roaming นั้น จะควบคุมจัดการให้ทุกๆเครื่องที่มีผู้ใช้คนเดียวกันมีข้อมูลเหมือนกัน และเรียกใช้ข้อมูลได้เหมือนกันทุกประการ ไม่ว่าจะเรียกใช้จากเครื่องไหนก็ตาม ซึ่งจะแตกต่างกับ Local data ตรงที่ Local จะเก็บเฉพาะเครื่องนั้น ๆ เท่านั้น
เพิ่มเติม การจัดเก็บข้อมูล Roaming นิยมจัดเก็บข้อมูลเล็ก ๆ ที่มีขนาดไม่ใหญ่ เช่นค่า Setting , Preferences และ Customization เพราะถ้าใช้ Roaming เก็บข้อมูลมากจนเกินไป Apps ของเราอาจจะถูกระงับการรับส่งข้อมูลผ่าน Roaming ได้
ตัวอย่างการจัดเก็บค่าแบบ Settings
สร้างตัวแปร Settings
Windows.Storage.ApplicationDataContainer roaming = Windows.Storage.ApplicationData.Current.RoamingSettings;
// Simple setting
roamingSettings.Values["exampleSetting"] = "Hello World";
อ่านตัวแปร Settings
Windows.Storage.ApplicationDataContainer roaming = Windows.Storage.ApplicationData.Current.RoamingSettings;
// Simple setting
Object value = roaming.Values["exampleSetting"];
ตัวอย่างการจัดเก็บค่าแบบ Object
สร้างตัวแปร Object
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";
roaming.Values["exampleCompositeSetting"] = composite;
อ่านตัวแปร Object
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
(Windows.Storage.ApplicationDataCompositeValue)roaming.Values["exampleCompositeSetting"];
if (composite == null)
{
// No data
}
else
{
// Access data in composite["intVal"] and composite["strVal"]
}
ตัวอย่างการจัดเก็บแบบ Text file
การจัดเก็บแบบ Text file
// Get the Roaming folder.
StorageFolder roaming = Windows.Storage.ApplicationData.Current.RoamingFolder;
// Create a new folder name DataFolder.
var dataFolder = await roaming.CreateFolderAsync("DataFolder",
CreationCollisionOption.OpenIfExists);
// Create a new file named DataFile.txt.
var file = await dataFolder.CreateFileAsync("DataFile.txt",
CreationCollisionOption.ReplaceExisting);
// Write text file
await file.WriteTextAsync(file, "String");
การอ่าน Text file
// Get the Roaming folder.
StorageFolder roaming = Windows.Storage.ApplicationData.Current.RoamingFolder;
if (roaming != null)
{
// Get the DataFolder folder.
var dataFolder = await roaming.GetFolderAsync("DataFolder");
// Get the file.
var file = await dataFolder.OpenStreamForReadAsync("DataFile.txt");
// Read the data.
using (StreamReader streamReader = new StreamReader(file))
{
this.textBlock1.Text = streamReader.ReadToEnd();
}
}
ลองมาดูตัวอย่างเพื่อความเข้าใจมากขึ้น
Example 1 สร้างตัวแปร Settings และอ่านตัวแปร Settings (Roaming Data)
สร้างหน้าจอสำหรับการ Input ข้อมูล และการ Read / Write ข้อมูล
MainPage.xaml
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0">
<TextBox
Name="textBox1"
HorizontalAlignment="Left"
Height="72"
Margin="0,22,0,0"
TextWrapping="Wrap"
Text="Enter text here."
VerticalAlignment="Top" Width="456"/>
<Button
Name='btnWrite'
Content="Write"
HorizontalAlignment="Left"
Margin="10,94,0,0"
VerticalAlignment="Top"
Width="156"
Click="btnWrite_Click"/>
<TextBlock
Name="textBlock1"
HorizontalAlignment="Left"
Margin="10,293,0,0"
TextWrapping="Wrap" Text=""
VerticalAlignment="Top"
Height="61"
Width="436"/>
<Button
Name="btnRead"
Content="Read"
HorizontalAlignment="Left"
Margin="10,374,0,0"
VerticalAlignment="Top"
Width="156"
IsEnabled="False"
Click="btnRead_Click"/>
</Grid>
MainPage.xaml.cs
using System.IO;
using System.Threading.Tasks;
using Windows.Storage;
namespace myPhoneApp
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private async void btnWrite_Click(object sender, RoutedEventArgs e)
{
WriteToSettings();
// Update UI.
this.btnWrite.IsEnabled = false;
this.btnRead.IsEnabled = true;
}
private void WriteToSettings()
{
// Get the Roaming Settings.
Windows.Storage.ApplicationDataContainer roaming = Windows.Storage.ApplicationData.Current.RoamingSettings;
// Create a Setting.
roaming.Values["exampleSetting"] = this.textBox1.Text;
}
private void btnRead_Click(object sender, RoutedEventArgs e)
{
ReadSettings();
// Update UI.
this.btnWrite.IsEnabled = true;
this.btnRead.IsEnabled = false;
}
private void ReadSettings()
{
// Get the Roaming Settings.
Windows.Storage.ApplicationDataContainer roaming = Windows.Storage.ApplicationData.Current.RoamingSettings;
Object value = roaming.Values["exampleSetting"];
if (value != null)
{
this.textBlock1.Text = value.ToString();
}
}
}
}
ทดสอบการ Input ข้อมูลและการ Write ข้อมูล
ทดสอบอ่าน Read ข้อมูล
Example 2 สร้าง Text file และการอ่าน Text file (Roaming Data)
สร้างหน้าจอสำหรับการ Input ข้อมูล และการ Read / Write ข้อมูลลงใน Text file
MainPage.xaml
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0">
<TextBox
Name="textBox1"
HorizontalAlignment="Left"
Height="72"
Margin="0,22,0,0"
TextWrapping="Wrap"
Text="Enter text here."
VerticalAlignment="Top" Width="456"/>
<Button
Name='btnWrite'
Content="Write"
HorizontalAlignment="Left"
Margin="10,94,0,0"
VerticalAlignment="Top"
Width="156"
Click="btnWrite_Click"/>
<TextBlock
Name="textBlock1"
HorizontalAlignment="Left"
Margin="10,293,0,0"
TextWrapping="Wrap" Text=""
VerticalAlignment="Top"
Height="61"
Width="436"/>
<Button
Name="btnRead"
Content="Read"
HorizontalAlignment="Left"
Margin="10,374,0,0"
VerticalAlignment="Top"
Width="156"
IsEnabled="False"
Click="btnRead_Click"/>
</Grid>
MainPage.xaml.cs
using System.IO;
using System.Threading.Tasks;
using Windows.Storage;
namespace myPhoneApp
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private async void btnWrite_Click(object sender, RoutedEventArgs e)
{
await WriteToFile();
// Update UI.
this.btnWrite.IsEnabled = false;
this.btnRead.IsEnabled = true;
}
private async Task WriteToFile()
{
// Get the text data from the textbox.
byte[] fileBytes = System.Text.Encoding.UTF8.GetBytes(this.textBox1.Text.ToCharArray());
// Get the Roaming folder.
StorageFolder roaming = Windows.Storage.ApplicationData.Current.RoamingFolder;
// Create a new folder name DataFolder.
var dataFolder = await roaming.CreateFolderAsync("DataFolder",
CreationCollisionOption.OpenIfExists);
// Create a new file named DataFile.txt.
var file = await dataFolder.CreateFileAsync("DataFile.txt",
CreationCollisionOption.ReplaceExisting);
// Write the data from the textbox.
using (var s = await file.OpenStreamForWriteAsync())
{
s.Write(fileBytes, 0, fileBytes.Length);
}
}
private async void btnRead_Click(object sender, RoutedEventArgs e)
{
await ReadFile();
// Update UI.
this.btnWrite.IsEnabled = true;
this.btnRead.IsEnabled = false;
}
private async Task ReadFile()
{
// Get the Roaming folder.
StorageFolder roaming = Windows.Storage.ApplicationData.Current.RoamingFolder;
if (roaming != null)
{
// Get the DataFolder folder.
var dataFolder = await roaming.GetFolderAsync("DataFolder");
// Get the file.
var file = await dataFolder.OpenStreamForReadAsync("DataFile.txt");
// Read the data.
using (StreamReader streamReader = new StreamReader(file))
{
this.textBlock1.Text = streamReader.ReadToEnd();
}
}
}
}
}
ทดสอบการ Input ข้อมูลและสร้าง Text file
แสดงค่าใน Text file ที่ได้จากการจัดเก็บไว้ใน Roaming Data
อ่านเพิ่มเติม
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2014-07-27 19:05:22 /
2017-03-25 22:34:03 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|