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

作者:小菜 更新时间:2025-02-06 点击数:
简介:Win8Metro中,我们不能在向以前那样调用WIN32的API函数来进行文件操作,因此,下面就来介绍一下Win8 Metro中文件的读写操作。

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倍流川枫和樱木花道的关系,情敌冤家也是朋友/最后的击掌是最完美的结局

加入收藏
Tag: Win8
               

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

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录