开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 4874|回复: 4
收起左侧

[C#作业] 第二十六天与第二十七天作业

[复制链接]
发表于 2019-5-7 17:00:55 | 显示全部楼层 |阅读模式   广东省揭阳市

主要学习内容

26.1 System.IO Directory 与 DirectoryInfo
26.2 System.IO File类基础使用方法
26.3 System.IO 文件流 FileStream StreamReader StreamWriter

27.1 综合案例 大文件拷贝 展示进度条与拷贝状态
27.2 托管于非托管资源介绍 GC(垃圾回收器) 概念 产生的问题 识别垃圾的算法 析构函数 动手验证算法
27.3 非托管资源的垃圾回收 IDisposable接口  using的使用 及原理

今日作业

  1. 遍历某磁盘下所有文件夹及文件输出在控制台上?
    注:可能会与到异常 , 分析异常,想办法解决
  2. 托管资源 与 非托管资源在资源回收时要注意什么?
  3. 所有的资源都可以使用using关键字对不对 , 为什么?
  4. using 的实现原理是什么?
结帖率:100% (1/1)
发表于 2019-6-14 14:49:14 | 显示全部楼层   江苏省南京市

1、遍历某磁盘下所有文件夹及文件输出在控制台上?
注:可能会与到异常 , 分析异常,想办法解决

思路:        循环里面递归遍历。。try捕捉异常,catch里面continue
        file和Directory长度大于0的时候输出控制台,最后再输出文件总数   


private void Form1_Load(object sender, EventArgs e){
        int i = listDisk(@"G:");
        Console.WriteLine(i);
}
public int listDisk(string path){
        int i = 0;
        string[] strFile = Directory.GetFiles(path);
        i = strFile.Length;
        string[] strDirectory = Directory.GetDirectories(path);
        if (strFile.Length > 0){
                Console.WriteLine(string.Join(",", strFile));
        }
        if (strDirectory.Length > 0){
                Console.WriteLine(string.Join(",", strDirectory));
        }
        foreach (string item in strDirectory){
                try{
                        i += listDisk(item);
                }
                catch (Exception){
                            continue;
                }
            }
            return i;
        }
}

2、托管资源 与 非托管资源在资源回收时要注意什么?
托管资源:会被GC自动回收,垃圾回收执行后未被回收的垃圾会自动升级,
非托管资源:需要手动回收,不回收会出现不可预知的错误

3、所有的资源都可以使用using关键字对不对 , 为什么?
不对,实现了IDisposeable接口的资源才能使用using关键字。

4、using 的实现原理是什么?
try{}finally{}语句块在finally中调用Dispose,只是不用自己写

评分

参与人数 1好评 +1 精币 +10 收起 理由
老郭 + 1 + 10 很赞同,谢谢!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2019-5-9 12:31:09 | 显示全部楼层   北京市北京市
1、遍历某磁盘下所有文件夹及文件输出在控制台上?
注:可能会与到异常 , 分析异常,想办法解决

思路:        循环里面递归遍历。。try捕捉异常,catch里面continue
        file和Directory长度大于0的时候输出控制台,最后再输出文件总数   


           private void Form1_Load(object sender, EventArgs e)
        {
           int i = listDisk(@"G:");
            Console.WriteLine(i);

        }


           public int listDisk(string path)
        {
            int i = 0;
            string[] strFile = Directory.GetFiles(path);
            i = strFile.Length;
            string[] strDirectory = Directory.GetDirectories(path);
            
            if (strFile.Length > 0){
                Console.WriteLine(string.Join(",", strFile));
            }
            if (strDirectory.Length > 0){
                Console.WriteLine(string.Join(",", strDirectory));
            }
            foreach (string item in strDirectory)
            {
                try
                {
                    i += listDisk(item);
                }
                catch (Exception)
                {
                    continue;
                }
            }
            return i;
        }

2、托管资源 与 非托管资源在资源回收时要注意什么?
托管资源:会被GC自动回收,垃圾回收执行后未被回收的垃圾会自动升级,判定资源是否是垃圾的方法一般有:引用计数法、压缩标记法等。
非托管资源:一般包含系统资源、网络资源、窗口、网络连接、数据的连接、画刷、图标、文件句柄等。
                  需要手动回收,为防止程序崩溃应当和使用Dispose()及时释放资源,一般做法是:实现IDisposable接口,然后添加using关键字。

3、所有的资源都可以使用using关键字对不对 , 为什么?
不对,实现了IDisposeable接口的资源才能使用using关键字。

4、using 的实现原理是什么?
try{}finally{}语句块

点评

程序写的真好,无以为报,只能全部拷贝下来   江苏省南京市  发表于 2019-6-14 14:50

评分

参与人数 1好评 +1 精币 +10 收起 理由
老郭 + 1 + 10 非常优秀

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:93% (26/28)

签到天数: 23 天

发表于 2019-5-7 17:08:31 | 显示全部楼层   河北省唐山市
使用Console.Write在控制台上显示。

不能再析构函数中释放托管资源

3和4我不知道,百度上我找不到了。

评分

参与人数 2好评 +2 精币 +2 收起 理由
曜石头 + 1 + 1 太认真了
老郭 + 1 + 1 这么认真给你1分...虽然全是错的

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表