TJU_SCS_C#学习笔记(8)

本文详细介绍了使用C#处理文件和数据传输的stream概念,结合Json序列化与反序列化实现数据的读写操作。通过代码示例展示了如何创建目录、移动文件、以及使用DataContractJsonSerializer进行Json文件的读写。尽管面临实验瓶颈,作者仍坚持努力,表达了对编程技术的追求和对大作业的积极态度。
摘要由CSDN通过智能技术生成

一.课堂内容

  接着上次的第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#!

 

转载于:https://www.cnblogs.com/blueContra/p/4495447.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值