| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2241 人关注过本帖
标题:求助关于FileStream与File和FileInfo的关系
只看楼主 加入收藏
yhj8848
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2011-12-18
收藏
 问题点数:0 回复次数:0 
求助关于FileStream与File和FileInfo的关系
以前在对文件进行读写和创建删除操作时,读写使用的是StreamWriter和StreamReader两个类,创建或者删除时就用Fileinfo类和FileSteam类配合着使用,一直不理解这几个概念,这几天有空静下心来看看深入学习,发现其实很多不明白的地方,下面我我边写代码边提疑问,希望高手能指点江山。
现在编一段代码,要实现在D盘根目录下创建一个文件夹,文件夹名称为测试,然后在该文件夹下新建一个文件名为test的文本文件,再把一段字符串写入这个文件内:
string str ="D:\\测试";               
DirectoryInfo  filedir = new DirectoryInfo(str);               
filedir.Create();   //建立目录            
FileInfo file = new FileInfo(str + "\\test.txt");            
file.Create();  //新建文件            
StreamWriter sw = new StreamWriter(str + "\\test.txt");              
sw.Write("测试看看");  //写入文件            
sw.Close();
当运行上面这段代码是会发生异常,提示"对路径“D:\测试”的访问被拒绝"。就是在文件新建完成时,没有进行内存释放,导致下面对这个文件文件进行写入操作时发生异,而且Fileinfo类里没有类似于.Close()这些释放内在的方法,我在网上看了一下一些前辈写的代码,发现在他们都是使用FileSteam类和Fileinfo类一起配合使用,下面我按照网上别人的思路写一下:
string str ="D:\\测试";               
DirectoryInfo  filedir = new DirectoryInfo(str);               
filedir.Create();   //建立目录            
FileInfo file = new FileInfo(str + "\\test.txt");            
FileStream f= file.Create();  //新建文件 注意:这里把file.Create()赋值给了FileSteam类的变量f            
f.Close();          //释放内存   
StreamWriter sw = new StreamWriter(str+"\\test.txt");              
sw.Write("测试看看");  //写入文件            
sw.Close();
上面这段代码就能运行通过了。
我一直不理解为什么FileInfo类里没有释放内存的方法,FileInfo类和FileStream类究竟是什么关系,当然我这次看书里也基本上了解了File类是FileInfo的静态形式。但是它同样也没有内存释放的方法,必须配合FileSteam类使用,因为FileSteam类有内在释放方法,还有一点FileSteam类好像它的构造数很多种。
搜索更多相关主题的帖子: 根目录 测试 文本文件 文件夹 字符串 
2012-04-21 09:21
快速回复:求助关于FileStream与File和FileInfo的关系
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024991 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved