TJU_SCS_C#学习笔记(8)

一.课堂内容

  接着上次的第22章stream讲到了23章Programming .NET and COM(什么鬼,表示完全不懂呀!),然后PPT上的内容就讲完了,然后章老师放了两个Binding有关的WP开发视频。

  我表示我当前的实验也正在研究这个binding,DataTemplate,还有Json序列化反序列化的问题,那些视频一个个看的云里雾里,不太明白怎么用啊!!!于是这么几天我都快疯了然而实验内容还卡这关键部分还没有写出来!

二.学习内容

  

  1.Stream

  先写一点stream的东西,关于stream这一章我尚未比较完整的去过一遍知识点,只做了一下一点练习(由于大作业我动手的比较晚,而且比较菜,所以有点焦头烂额),以下是代码片段截图:

  stream是文件和数据传输的载体,在这里stream主要在文件夹中对文件进行一些基本的复制移动重命名或者删除的操作,stream的这个用法也是我以前并没有用过的。

  以下是练习文件dir.CreateSubdirectory(newDirectory);创建出来的子目录的,并且把父目录中的文件考入子目录中的操作结果,也就是上面代码中被注释的部分代码,

  然后下面一段foreach中的代码执行了一下结果,就是把原本test目录下的1.txt重命名了一下,当然这里只是简单的示范,这段代码应该对不同类型的许多文件都起作用,

  最后在用stream把删除掉我们做过练习的文件:

  这里只是stream的一个比较另类的用法。

  2.关于Json文件的序列化与反序列化

  先贴一段代码:

        private async Task writeJsonAsync()
        {
            var myCars = buildObjectGraph();

            var serializer = new DataContractJsonSerializer(typeof(List<Car>));
            using (var stream = await ApplicationData.Current.LocalCacheFolder.OpenStreamForWriteAsync(
                                JSONFILENAME,
                                CreationCollisionOption.ReplaceExisting))
            {
                serializer.WriteObject(stream, myCars);
            }

            resultTextBlock.Text = "Write Succeeded";
        }

        private async Task readJsonAsync()
        {
            string content = String.Empty;

            var myStream = await ApplicationData.Current.LocalCacheFolder.OpenStreamForReadAsync(JSONFILENAME);
            using (StreamReader reader = new StreamReader(myStream))
            {
                content = await reader.ReadToEndAsync();
            }

            resultTextBlock.Text = content;
        }

        private async Task deserializeJsonAsync()
        {
            string content = String.Empty;

            List<Car> myCars;
            var jsonSerializer = new DataContractJsonSerializer(typeof(List<Car>));

            var myStream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(JSONFILENAME);

            myCars = (List<Car>)jsonSerializer.ReadObject(myStream);

            foreach (var car in myCars)
            {
                content += String.Format("ID: {0}, Make: {1}, Model: {2} ...", car.Id, car.Make, car.Model);
            }

            resultTextBlock.Text = content;
        }

  以上代码中的三个函数分别对应了对Json文件的读写和反序列化。

  代码中的buildObjectGraph()返回一个List<Car>,然后将其内容写入名为JSONFILENAME的Json文件中去,这边的DataContractJsonSerializer(typeof(List<Car>))创建以了一个可以通过流往Json文件里写内容的实例,这个流的声明也是怪复杂的

var stream = await ApplicationData.Current.LocalCacheFolder.OpenStreamForWriteAsync(
                                JSONFILENAME,
                                CreationCollisionOption.ReplaceExisting)

后面关于Json的读和这里的写大同小异,反序列化的话就是把Json文件的内容读到List中去。

  总感觉这跟我写的课程表很有关联,但我还是不太会用,可能主要是我的DataTemplate不会写。

三.课后感想

  最近的重心都放在写大作业上,所以博客内容比较段而且水。

  大作业表示还有很多难关需要克服,显示远比想象来的复杂得多,不到最后不能放弃,加油!

  Go ahead! C#!

时间: 2024-08-27 05:28:22

TJU_SCS_C#学习笔记(8)的相关文章

TJU_SCS_C#学习笔记(4)

一.课堂内容 这周的课讲的内容比较多,有struct结构体,interface接口,以及C#数组中的一些特性,比如特殊的多维数组的声明方式,以及不规则数组还有模版,堆栈,字典等等,还有字符串string以及正则表达式的一些内容. 二.学习内容 1.首先练习了关于接口的相关内容,以前在学C++,和JAVA的时候对接口都没有好好理解,在C#的课上才明白了到底什么是接口,接口和抽象类有点类似,两者均不可实例化,均可以被继承,然而抽象类只能被单继承,而接口可以被多继承,为了防止接口污染,所以接口不可以太

TJU_SCS_C#学习笔记(7)(上)

一.课堂内容 上回策马奔腾讲到17章,这次从第18章讲到了22章. 18章WPF应用,这个在即将要截至的大实验中有被要求......19章Windows Form Application,20章attributes and reflection,21章线程与同步,22章stream流.不得不说内容的确非常非常的充实,我感觉我需要很长很长的时间才能够将所有的知识接触理解消化. 故,由于时间的问题,这篇博客只能比较短暂的就其中的某些知识点进行一下基础的探究. 二.学习内容 1.C#线程与同步. 线程

TJU_SCS_C#学习笔记(9)

这次的博客本应该在上个周末就贴上来,一拖再拖,拖到现在周五,然而周末还有最后一篇博客. T T 由于上个礼拜并没有上课讲内容,看了做得比较好的同学们的成果展示,有的做游戏,有的写生活应用,有的想法奇特,有的技术超群,有的包装华丽……不得不说每个同学都非常有想法,我也感受到有个稳定的团队和明确的小组分工是多么高效的事情,然而我一个人组队在编写的过程中花费了太多的时间,如果有队友一块儿交流的话,我感觉我能做得更加好. 接下来我就讲一些我在编写代码过程中学习的知识. 1.WP的Navigation和W

TJU_SCS_C#学习笔记(5)

一.课堂内容 首先延续上节课的结尾,又讲了关于正则表达式的内容,以及c#中的exceptions相关的知识,以及delegates中文翻译为委托,以及c#的时间events,还有两个关于Windows phone app开发的视频教程.正则表达式就不用多说了,这光光拉出去都是一门值得深究的课程,关于events线程啊什么的,不管是在c++还是java中都是让我头疼的内容,关于Windows phone app的开发只能说非常有意思,但是感觉还是动手实践会学的比较快,可惜我的虚拟机就是不争气,还在

TJU_SCS_C#学习笔记(6)

一.课堂内容 感觉这节课讲了好多好多东西,至少从13章节讲到了大概17.18章的样子.13章关于LINQ语句的一些介绍,14章是关于XML的用法,15章是LINQ语句更多实际应用,16章是ADO.NET以及relational database,17章是ASP.NET,这些都是.NET一些特性,然而我并不太会,章老师也给我看了些关于ASP的视频,然而我并不会. 这篇博客主要些关于简单的LINQ以及XML两章节的一些练习. 二.学习内容 1.LINQ LINQ的全称是Language-INterg

TJU_SCS_C#学习笔记(3)

一.课堂内容 这周的课讲了chapter4&chapter5的一些内容,关于class和objects,以及inheritance和polymorphism.C#中的这些概念和C++,JAVA这些同为OOP的编程语言中的概念有些类似,但是具体上还是有着一些区别,由于之前学过C++,JAVA中的类和实力,继承与多态的概念,所以学习起来还算比较熟悉,但是精髓的想法以及细节上的处理还是需要话更多更多的时间来联系熟悉融会贯通. 二.学习内容 1.首先做了关于class中this指针的相关联系,PPT中提

TJU_SCS_C#学习笔记(10)

Revision History Date Issue Description Author 10/May/2015 1.0 Realize the APP with binding. Tang Hongyao 17/May/2015 V2.0 Give up binding, change another way. Tang Hongyao   Problem Statement At first, I don't know how to realize the saving and load

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu