• 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#!

  • 相关阅读:
    2014,成为更好程序员的7个方法
    联想集团大裁员,血淋漓的教训:公司只能给你位置,却无法给你未来!(转)
    Oracel数据库连接时出现:ORA-12518:监听程序无法分发客户机连
    Could not find a version that satisfies.... No matching distribution found for .....
    深度学习(七)U-Net原理以及keras代码实现医学图像眼球血管分割
    深度学习(六)keras常用函数学习
    np.random.random()函数 参数用法以及numpy.random系列函数大全
    2019最新win10 安装tensorflow1.4(GPU/CPU)+cuda8.0+cudnn8.0-v6 + keras 安装CUDA失败 导入tensorflow失败报错问题解决
    c++ 网络编程课设代码 网络编程入门教程 ---目录
    c++ 网络编程(十一) LINUX下 初步制作基于HTTP的WEB服务器
  • 原文地址:https://www.cnblogs.com/blueContra/p/4495447.html
Copyright © 2020-2023  润新知