Win8Metro中文件读写删除与复制操作

1 Window
【菜科解读】
Win8Metro中,我们不能在向以前那样调用WIN32的API函数来进行文件操作,因此,下面就来介绍一下Win8 Metro中文件的读写操作。
1 Windows 8 Metro Style App中文件的操作都包含在Windows.Storage命名空间中,其中包括StorageFolder,StorageFile,FileIO等类库。
2 Win8文件的读写操作都是异步方式进行的,因此要使用async3 创建文件: StorageFile storageFile=await Windows.Storage.KnownFolders.DocumentsLibrary.CreateFileAsync("1.txt",Windows.Storage.CreationCollisionOption.ReplaceExisting);这里我们创建了一个1.txt的文档,如果已经存在这个文档,那么新建的文档将替换,覆盖掉旧文档。
由于文档读写是异步方式操作,因此,我们要将它放到async修饰的函数里才可以使用,具体如下:private async void SelectImageOne(byte[]outArary){StorageFile storageFile=await Windows.Storage.KnownFolders.DocumentsLibrary.CreateFileAsync("1.txt",Windows.Storage.CreationCollisionOption.ReplaceExisting); await FileIO.WriteBytesAsync(storageFile, outArary);}在上述的代码中,参数是我们要写入到文件“1.txt”里的内容,这里是一个byte[]数组。
4 写入文件:如3中的代码所示await FileIO.WriteBytesAsync(storageFile, outArary);写入文件的方法是FileIO中的write方法,这里一共有以下四种方法:WriteBufferAsync(Windows.Storage.IStorageFile file, IBuffer buffer);WriteBytesAsync(Windows.Storage.IStorageFile file, byte[] buffer);WriteLinesAsync(Windows.Storage.IStorageFile file, IEnumerable lines);WriteLinesAsync(Windows.Storage.IStorageFile file, IEnumerable lines,UnicodeEncoding encoding);WriteTextAsync(Windows.Storage.IStorageFile file, string contents);WriteTextAsync(Windows.Storage.IStorageFile file, string contents, UnicodeEncoding encoding);这里我们列举的是写入byte[]的方法。
5 打开文件:StorageFile storageFile=await Windows.Storage.KnownFolders.DocumentsLibrary.CreateFileAsync("1.txt",Windows.Storage.CreationCollisionOption. OpenIfExists);这里我们打开了一个名字为”1.txt”的文本文件。
6 读取文件:在FileIO中有三种文件读取方法,分别读取不同的文件:await FileIO.ReadTextAsync(Windows.Storage.IStorageFile file);await FileIO.ReadTextAsync(Windows.Storage.IStorageFile file, UnicodeEncoding encoding);//返回指定的文本编码格式await FileIO. ReadBufferAsync (Windows.Storage.IStorageFile file);await FileIO. ReadLinesAsync (Windows.Storage.IStorageFile file);await FileIO. ReadLinesAsync (Windows.Storage.IStorageFile file, UnicodeEncoding encoding);这里我们以文本为例:string fileIContent = await FileIO. ReadTextAsync (storageFile);这样我们就返回了一个string文本。
我们也可以通过流来读取文件:IBuffer buffer = await FileIO.ReadBufferAsync(storageFile);using (DataReader dataReader = DataReader.FromBuffer(buffer)){string fileContent = dataReader.ReadString (buffer.Length);}7 IBuffer, byte[], Stream之间的相互转换:StorageFile storageFile=await Windows.Storage.KnownFolders.DocumentsLibrary.CreateFileAsync("1.txt",Windows.Storage.CreationCollisionOption. OpenIfExists);IBuffer buffer = await FileIO.ReadBufferAsync(storageFile);byte[] bytes=WindowsRuntimeBufferExtensions.ToArray(buffer,0,(int)buffer.Length);Stream stream = WindowsRuntimeBufferExtensions.AsStream(buffer);另外一个实例:
1.首先创建一个文件夹,在文件夹里创建文件
private async void CreateButton_Click(object sender, RoutedEventArgs e)
{
string name=FileName.Text; //创建文件的名称
folder =ApplicationData.Current.LocalFolder;
StorageFolder tempFolder = await folder.CreateFolderAsync("Config",CreationCollisionOption.OpenIfExists);
file =await tempFolder.CreateFileAsync(name,CreationCollisionOption.OpenIfExists);
}
2.在创建好的文件里,写入我们的数据,这里介绍三种写入文件的方式
private async void WriteButton_Click(object sender, RoutedEventArgs e)
{
string content = InputTextBox.Text.Trim();
ComboBoxItem item = WriteType.SelectedItem asComboBoxItem; //选择写入的方式
string type = item.Tag.ToString();
switch (type)
{
case"1": //以文本的方式写入文件
await FileIO.WriteTextAsync(file,content);
break;
case"2": //以bytes的方式写入文件
Encoding encoding = Encoding.UTF8;
byte[] bytes = encoding.GetBytes(content);
await FileIO.WriteBytesAsync(file,bytes);
break;
case"3"://以流的方式写入文件
IBuffer buffer = Convert(content); //将string转换成IBuffer类型的
await FileIO.WriteBufferAsync(file,buffer);
break;
}
}
3.读取刚才写入文件里的数据,这里也介绍三种读取文件的方式
private async void ReadButton_Click(object sender, RoutedEventArgs e)
{
ComboBoxItem item = ReadType.SelectedItem asComboBoxItem;
string type = item.Tag.ToString();
string content = string.Empty;
switch (type)
{
case"1": //以文本的方式读取文件
content =await FileIO.ReadTextAsync(file);
break;
case"2": //以流的方式读取文件
IBuffer buffer = await FileIO.ReadBufferAsync(file);
content = Convert(buffer);
break;
case"3":
content =await Convert();
break;
}
ShowTextBox.Text = content;
}
private IBuffer Convert(string text) //将string转换成IBuffer类型的
{
using (InMemoryRandomAccessStream stream = newInMemoryRandomAccessStream())
{
using (DataWriter dataWriter = newDataWriter())
{
dataWriter.WriteString(text);
return dataWriter.DetachBuffer();
}
}
}
private string Convert(IBuffer buffer) //将IBuffer转换成string类型的
{
string text = string.Empty;
using (DataReader dataReader=DataReader.FromBuffer(buffer))
{
text = dataReader.ReadString(buffer.Length);
}
return text;
}
private async Task Convert()
{
string text=string.Empty;
using (IRandomAccessStream readStream = await file.OpenAsync(FileAccessMode.Read))
{
using (DataReader dataReader = newDataReader(readStream))
{
UInt64 size = readStream.Size;
if (size list = newList();
list.Add("System.DateAccessed");
list.Add("System.FileOwner");
IDictionary extra = await file.Properties.RetrievePropertiesAsync(list);
var property = extra["System.DateAccessed"];
if (property != null)
{
builder.AppendLine("文件创建时间:"+property);
}
property = extra["System.FileOwner"];
if(property!=null)
{
builder.AppendLine("文件所有者:"+property);
}
DisplyProperty.Text = builder.ToString();
}
}
}
5.复制删除文件
private async void OKButton_Click(object sender, RoutedEventArgs e)
{
try
{
ComboBoxItem item=FilesList.SelectedItem asComboBoxItem;
string fileName = item.Content.ToString(); //获得选中的文件名称
int index=fileName.IndexOf('.');
string firstName = fileName.Substring(0,index);
string type = fileName.Substring(index);
StorageFolder tempFolder = await folder.GetFolderAsync("Config"); //文件在Config文件夹下放置着
file =await tempFolder.GetFileAsync(fileName);
if (file == null)
{
Msg.Text ="文件不存在!";
return;
}
if (CopyoButton.IsChecked.Value) //判断进行复制还是删除
{
StorageFile copy = await file.CopyAsync(tempFolder,firstName+"复制"+type,NameCollisionOption.ReplaceExisting);
Msg.Text ="复制成功!!!";
}
else
{
await file.DeleteAsync();
Msg.Text ="删除成功!!!";
}
}
catch
{
Msg.Text ="操作失败!";
}
}
Win8Metro,中,文件,读写,删除,与,复制,操作,钟会为什么会中姜维的反间计?为什么他会选择造反
当时的人,把他比喻为西汉的。
可是,这样一个聪明人,在获得后,却毫不怀疑地选择信任姜维。
“出则同轝,坐则同席”,以至于中了姜维的反间计,残杀自己的部下,反被部下造反杀掉。
(钟会剧照) 很显然,钟会在获得姜维以后,智力似乎一下就大打折扣了。
这究竟是怎么回事呢? 我认为,根本的原因,是钟会在那时候心态发生了变化。
他决定做大当。
而做大当皇帝,他认为姜维是他最可信赖的人。
钟会在魏国的时候,不但聪明,而且一直谨小慎微。
他建立了大功劳,但是几次让封赏他,他都推辞。
也正是因为这样,他获得了司马昭的高度信任。
因为获得司马昭的高度信任,所以司马昭在派遣大军大举进攻蜀国的时候,才让他担任主力中军,统领十万人马。
同时,在钟会想夺取及邓艾兵马的时候,司马昭才对钟会那么信任,不但夺了他们兵权,把两人用囚车运回魏国,而且还把他们的军队都交给钟会,没有考虑节制钟会的问题。
这样一来,钟会自身有10万人马,又得到诸葛绪和邓艾共5万人马,再加上姜维10多万人马,蜀国朝内还有不少人马。
这样,钟会就有了多达近30万人马。
有了这么多人马在手里,钟会自然就膨胀了。
早期,大家还要讲点道义,搞一些“挟天子以令诸侯”“孤乃中山靖王之后”之类的噱头。
但是到了三国后期,就只是拼拳头了。
谁的拳头最硬,谁的实力最强,谁就当老大。
司马家族就是靠这个,硬生生地夺取了曹魏的权力。
钟会作为司马家族最重要的心腹,自然有模学模,有样学样。
(司马昭剧照) 一个好汉三个帮。
别看钟会手中有三十万大军,但是,那些大军听指挥,是因为他们是曹魏的士兵,或者是司的士兵。
曹魏前后经历五代,前后也经历三代,根深叶茂,所以他们会听招呼,就算司马氏已经把曹魏的权力夺得差不多了,但毕竟他们并没有造反,而且普通士兵并不清楚高层的情况。
所以,大家还都奉曹魏为正统,为曹魏而战。
现在钟会想自己做老大,无论兵还是将,他们都不愿意听钟会的。
作为将领来说,他们的主子是曹魏或者司马氏,他们不愿意背叛。
再说了,灭了蜀国,回去就可以当官获地,封妻荫子。
跟着钟会偏安一隅,可不一定能获得什么好处。
对于普通士兵来说,他们的家乡在魏国,妻子儿女们都在魏国。
现在跑到别的国家来偏安,从此不能回到家乡,不能和妻子儿女们团聚,他们心里又怎么会高兴呢? 所以说,当时的钟会想要造反,其实并没有什么可以依靠的人。
(姜维剧照) 而姜维在投降了钟会以后,钟会立刻就把姜维视为最可信任的人。
为什么呢? 其一,姜维钟会。
因为姜维的目的,是要激起曹魏军中内讧。
所以他要曲意逢迎钟会,借钟会的手,把曹魏的那些将领给杀掉,最终实现反正的目的。
正是由于姜维的曲意,让钟会对姜维很信任。
其二,钟会自认姜维恩人。
姜维在蜀汉的时候,多次受、的猜忌排挤,也因此他最后才选择屯田。
这样一种遭遇,让姜维心中很不满。
钟会认为,这样的姜维,肯定是有反叛之心的,只是还没找到机会。
现在钟会信任他,给他机会,就是给他恩惠。
姜维想要感恩,因此会死心塌地跟随他。
其三,姜维是难得的人才。
钟会的目标,可不只是偏安一隅,他是想要以蜀汉为根据地,夺取长安,从而打败司马昭,像当年的做法一样。
在他看来,姜维就是他的。
有人说,钟会不怕姜维做大吗?钟会肯定也担心这点,但那是后话。
先让姜维帮他夺下长安再说。
刘邦能够轻松搞定韩信,他自然也能够轻松搞定姜维。
但钟会千算万算,没想到姜维一开始就是假的,更没想到曹魏将领会立马造反。
结果皇帝梦灭,身死异乡。
随机文章速度最快的高山滑板速降,时速150公里(仅次于超跑)展望人工智能的发展和未来,无人机/智能音箱/智能助手(变革将临)鉴定陨石最简单的方法,外观/磁性能分辨出九成真假陨石揭秘大脑极限的恐怖,超级天才改变人类发展轨迹/开发大脑获超能力天王星为什么不能住人,气候环境恶劣不适合居住(零下−224℃)
《后宫·甄嬛传》中的浣碧真有历史原型吗?是清朝的哪个人
通过查阅史料,发现历史上的允礼确实有一位姓的福晋,她就是果亲王允礼嫡福晋钮祜禄氏,即浣碧的历史原型。
从出身来看,允礼嫡福晋钮祜禄氏绝对是一种皇后级别的标准了,她来自钮祜禄家族中最显赫的弘毅公一门,祖父是初年的辅政大臣、太师,父亲阿灵阿是遏必隆第七子,同时也是允礼的老师,姑姑则是康熙第二任妻子孝昭皇后。
而且,从母系来看,钮祜禄氏也是无与伦比的。
钮祜禄氏的母亲是(帝生母)的亲妹妹乌雅氏,也就是说,雍正帝是钮祜禄氏的表哥。
不过,他们一家却也有派系之别,因为钮祜禄氏的父亲阿灵阿属于八爷党,而钮祜禄氏的丈夫允礼则属于四爷党。
钮祜禄氏的父亲阿灵阿是康熙非常器重的一位大臣,他于康熙四十年被提拔为领侍卫内大臣,后又兼任理藩院尚书,统领火器营。
阿灵阿曾在康熙四十七年举荐八阿哥为皇太子,受到了四阿哥(雍正帝)的忌恨,雍正帝继位后,虽然阿灵阿已经去世,但雍正帝仍然没有放过他们一家,在他的墓碑上面刻上了“不臣不弟暴悍贪庸阿灵阿之墓”,并将阿灵阿儿子阿尔松阿的家产籍没,妻子发往为奴。
不过,雍正帝对阿灵阿的女婿,即康熙第十七子允礼却非常器重,雍正元年即将允礼封为果郡王,雍正六年晋封为果亲王。
雍正八年怡亲王允祥去世,允礼接替了允祥的位子,总管户部三库,并掌管宗人府事务,成为的“首辅”式人物,这一切都说明了允礼其实一直一个隐藏在暗处的“四爷党”。
关于允礼的福晋,史料记载他有两位福晋,嫡福晋即阿灵阿之女钮祜禄氏,侧福晋是达色之女,不过史料却显示只有侧福晋孟氏给允礼生下了一子一女,并都早夭,难道允礼与嫡福晋钮祜禄氏的夫妻关系不好吗? 其实并不是这样的。
允礼生于康熙三十六年,他与钮祜禄氏成婚大概在康熙五十年左右,然而,史料显示钮祜禄氏在雍正七年做了一年果亲王嫡妃后便去世了,估计年龄应该在30岁左右。
因此,允礼嫡福晋钮祜禄氏很有可能身体一直不是很好,这也在一定程度上影响到了她的生育。
而且,在嫡福晋钮祜禄氏去世之后,侧福晋孟氏才给允礼生下了一子一女,这恰好说明允礼对钮祜禄氏是十分专情的,只可惜天妒红颜,这位亲王福晋却只活了30岁,不得不令人叹惋呀! 随机文章北伐失败!诸葛亮临终前叹:当初没杀他就好了!美国NASA承认外星人存在,NASA的秘密档案公布外星飞行器北极是陆地还是海洋,是被冰川覆盖的海洋(生活有900种植物)已灭绝的十大巨怪图片,碳龟头比足球场还大/身子是普通汽车的2倍流川枫和樱木花道的关系,情敌冤家也是朋友/最后的击掌是最完美的结局