File.Create(path)未关闭遇到的一点点问题
本人老菜鸟一枚,不是因为偶是菜鸟中的老手,而是偶是老了但是还是很菜的鸟╮(╯▽╰)╭,不过打今儿起偶想要腾飞……
今天写文本文件编辑类时遇到一个小问题,下面先将问题描述一下:
1、写文本文件时都会习惯性的判断一下文件是否存在,如果不存在就创建一个出来,也就是下面的代码
if (!File.Exists(logPath))
{
File.Create(logPath);
}
看起来似乎没什么问题,但是很不凑巧的,问题就是来了,下面几种写文本的方式,在第一次建立文本文件的时候数据都写不进去。
File.WriteAllText(logPath, msg); File.WriteAllLines(logPath,msg);
byte[] buffer = Encoding.Default.GetBytes(msg);
FileStream myFileStream = new FileStream(logPath, FileMode.Append, FileAccess.Write);
myFileStream.Write(buffer, , buffer.Length);
myFileStream.Close();
myFileStream.Dispose();
经查阅,由此方法创建的 FileStream 对象的 FileShare 值默认为 None;直到关闭原始文件句柄后,其他进程或代码才能访问这个创建的文件。也就是说必须要关闭,要关闭,要关闭,下面就是问题的解决办法:(https://msdn.microsoft.com/zh-cn/library/d62kzs03(VS.80).aspx)
if (!File.Exists(logPath))
{
File.Create(logPath).Close();
}
其实,File.WriteAllText(),FileStream中好多写入文本的方法都默认新建文件,但是本老菜鸟还是觉得判断一下比较好,毕竟可以避免那些不会新建文件的方法报错。
欢迎指正,共同进步。
File.Create(path)未关闭遇到的一点点问题的更多相关文章
- 使用File、Path和Directory进行常见的操作
我们偶尔会用到文件操作,其中File.Path和Directory这三个类是比较常见的,今天写了一个测试demo,也是顺便学习一下,记录一二. BTW,使用这几个类的时候需要引用using Syste ...
- C#使用File.Create()创建文件后资源被占用
由于文件被占用不能读写,所以报错“另一个程序正在使用此文件进程无法访问” 解决方法是在创建文件后立即Dispose掉 File.Create(path).Dispose();
- C# IO流 File.Exists,Directory.Exists, File.Create,Directory.CreateDirectory
void Start() { CreateDirectory(); CreateFile(); } //平台的路径(封装起来的一个属性,这不是一个方法) public string path { ge ...
- c#创建文件( File.Create() )后对文件写操作出错的分析
在C#中,使用system.IO.File.Create()创建完一个文件之后,如果需要对这个文件进行写操作,会出现错误,提示你“这个文件正在被使用”. 原因是System.IO.File.Creat ...
- 未关闭InputStream 引起的血案
下面的方法是从aws s3 读取文件对象下载到本地 public int downloadFile(HttpServletResponse httpResponse, String storePath ...
- Java文件IO操作应该抛弃File拥抱Path和Files
Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream;import java.nio.file.FileSystem; ...
- 文件操作之File 和 Path
转载:https://blog.csdn.net/u010889616/article/details/52694061 Java7中文件IO发生了很大的变化,专门引入了很多新的类: import j ...
- springMVC+mybatis 进行单元测试时 main SqlSessionFactoryBean - Parsed configuration file: 'class path resource' 无限的读取xml文件
今天终于写完的Dao层的操作,怀着无比激动的心情,进行单元测试,就在最后一个方法,对的就是最后一个方法,启动单元测试就会报以下错误: [2016-05-11 18:25:01,691] [WARN ] ...
- Activity has leaked window that was originally added -界面退出时未关闭对话框异常 android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? -
退出Activity时弹出登录框,点击确定finish当前Activity,结果报了这个错,随后查找资料知道 原因: 是因为退出Activity时没有关闭弹出框,出现了这个错误 解决方法: 只需要在a ...
随机推荐
- PostgreSQL没有认证密码就登陆了缘由
上午同事爆出这样的问题,使用正确的用户名和错误的密码连接了postgresql数据库,竟然连上了.这不是故意这样神操作,不小心密码写错了,咋一看这样怎么能行,随便输入一个密码都能登陆上.自己测试也是同 ...
- CSS的常用单位 %和 vw vh 和 box-sizing:border-box; 和flex简介
一.% 理解: %号是CSS中的常用单位,它是相对于父容器而言的.如:一个父容器的宽是100px,给它的子元素一个10%,那么子元素的宽就是100px的10% 10px. 效果图: (利用%设置了li ...
- javascript中的中介者模式——迪米特法则
”迪米特法则“——最少知识原则,不和陌生人说话,就是说,一个对象应当对其他对象有尽可能少的了解.talk only to your immediate friends.初衷是:降低对象之间的耦合度. ...
- vuex的使用心得
今天的工作内容-----vuex的使用心得: 都知道,对于小型的项目来说不必使用vuex,但是对于需要把共享的变量全部存储在一个对象里面,然后把这个对象放在顶层组件中以供其他组件使用.其实vuex就是 ...
- 一次生产环境搭建11g RAC的记录
一.使用惠普3par工具配置共享存储 该部分可由惠普工作人员协助配置,只需将需求告知即可.如果想自己配置,惠普厂商会发送相关的软件工具以及操作手册给用户. 用putty登陆共享存储,使用showpd ...
- 5W2H方法:七问分析法
5W2H分析方法也叫七问分析法,是二战中美国陆军兵器修理部首创.简单.方便.易于理解.使用,富有启发意义,被广泛应用于企业管理和技术活动,对于决策和执行性的措施也非常有帮助,有助于弥补考虑问题的疏漏. ...
- python基础学习day6
代码块.缓存机制.深浅拷贝.集合 id.is.== id: 可类比为身份号,具有唯一性,若id 相同则为同一个数据. #获取数据的内存地址(随机的地址:内存临时加载,存储数据,当程序运行结束后,内存地 ...
- 使用GUI工具Portainer.io管控Docker容器
背景 5年前容器技术扑面而来,如今已经成为面向云原生开发的基础架构,基于微服务的设计需要部署大量容器,同时强调了友好快速的管理容器. 是时候推荐一个轮子Portainer.io:提供GUI界面的容器管 ...
- Docker Compose 文件讲解
Docker Compose 是什么 官方文档: Docker Compose是定义和运行多容器 Docker 应用程序的工具.使用"Compose",您可以使用 YAML 文件来 ...
- iview admin template 基础模板架子
https://github.com/iview/iview-admin/tree/template