文件操作FileStream,Log
1、关于读写文件,犯的一个低级错误,平常代码拷贝习惯了,就像电脑用多了会提笔忘字一样,所以平常还是要多多用心才好。
这段代码的意图是在文件中写入数据,如果原文件不存在,则先新建。
事实上,当真的执行了System.IO.File.Create(filename); 再执行System.IO.StreamWriter sr=new System.IO.StreamWriter(filename,true)时会报错:
The process cannot access the file 'C:\Documents\bigtext\1.txt' because it is being used by another process.
原因:System.IO.File.Create(filename) 返回值是FileStream,执行了新建但是并没有关闭FileStream,所以文件used by another process.
private static void write()
{
try
{
string filename = @"C:\Documents\bigtext\1.txt";
if (!System.IO.File.Exists(filename))
{
System.IO.File.Create(filename);
}
using (System.IO.StreamWriter sr=new System.IO.StreamWriter(filename,true))
{
sr.WriteLine("test12");
}
}
catch
{ }
}
修改如下即可
private static void write()
{
try
{
string filename = @"C:\Users\xiaochun-zhai\Documents\bigtext\1.txt";
if (!System.IO.File.Exists(filename))
{
System.IO.FileStream sr= System.IO.File.Create(filename);
sr.Close();
}
using (System.IO.StreamWriter sr=new System.IO.StreamWriter(filename,true))
{
sr.WriteLine("test12");
}
}
catch
{ }
}
2、事实上一句代码就可代替上面的方法,以上方法仅仅为了说明System.IO.File.Create使用时要注意的问题。
string filename = @"C:\Documents\bigtext\1.txt";
System.IO.File.AppendAllText(filename, "ceshi\r\n");
3、一个极简单的写日志的类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace writefile
{
public class WriteLog
{
public static string LogBasePath = @"C:\";
private string logFileName = "Log.txt"; private static object _locker = new object();
private static WriteLog _instance;
private WriteLog()
{
} public static WriteLog Instance
{
get
{
if (_instance == null)
{
lock (_locker)
{
if (_instance == null)
{
_instance = new WriteLog();
}
}
}
return _instance;
}
}
public void LogMessage(string message)
{
lock (_locker)
{
string fullPath = System.IO.Path.Combine(WriteLog.LogBasePath, logFileName);
System.IO.File.AppendAllText(fullPath, message + Environment.NewLine);
}
}
}
}
调用: WriteLog.Instance.LogMessage("test");
说明:Environment.NewLine 代表换行
。
文件操作FileStream,Log的更多相关文章
- asp.net文件操作类
/** 文件操作类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; usin ...
- C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名
原文:C# 文件操作(全部) 追加.拷贝.删除.移动文件.创建目录 修改文件名.文件夹名 本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归 ...
- C#对文件操作(基本的读写以及压缩和解压)
主要是针对单个文件进行读写操作和压缩操作:用到的主要C#类有FileStream.FileInfo.StreamWrite.StreamRead.GZipStream. 字符数组和字节数组的转换: ] ...
- c#之文件操作(学习笔记)
File类和Directory类 FileInfo类 需要提供一个文件路径来创建一个FileInfo类实例对象,FileInfo提供很多类似File的方法,在选择使用File还是FileInfo时应遵 ...
- Unity3D学习笔记(二十五):文件操作
文件是什么? 存储在硬盘上的最后的节点. 文件夹是什么? 文件的上级单位称为文件夹. 文件夹的基本结构? 文件夹是层级化结构的,对于同级的文件夹不可以重名,父文件夹和子文件夹可以同名> IO:I ...
- 【基础巩固】文件流读写、大文件移动 FileStream StreamWriter File Path Directory/ ,m资料管理器(递归)
C#获取文件名 扩展名 string fullPath = @"d:\test\default.avi"; string filename = Path.GetFileName(f ...
- C# 文件操作(摘抄)
——选自<c# 编程兵书>第11章 张志强 胡君 编著 11 文件操作概述 11.1 驱动器 在Windows操作系统中,存储介质统称为驱动器,硬盘由于可以划分为多个区域,每一个区域称为一 ...
- C# 文件操作【转】
本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内 ...
- C#文件操作 File(静态类)
操作某一个文件/文件夹,需要一个文件的完整路径 一.使用File的静态方法进行文件操作 1 2 3 4 5 6 7 8 9 //使用file的静态方法进行复制 File.C ...
随机推荐
- 实验四实验报告————Android基础开发
实验四实验报告----Android基础开发 任务一 关于R类 关于apk文件 实验成果 任务二 活动声明周期 实验成果 任务三 关于PendingIntent类 实验成果 任务四 关于布局 实验成果 ...
- python基础之re,sys,suprocess模块
re 正则表达式 1.什么是正则? 正则就是用一系列具有特殊含义的字符组成的规则,该规则用来描述具有某一特征的字符串. 正则就是用来在一个大的字符串匹配出符合规则的子字符串 2.为什么用正则? 正则可 ...
- php中文件上传需要注意的几点
1.首先要开启php.ini中的文件上传,打开php.ini 配置文件,查找 File Uploads ,在这个区域有以下3个选项: ;;;;;;;;;;;;;;;; ; File Uploads ; ...
- Vue2.X的路由管理记录之 钩子函数(切割流水线)2
$route可以在子组件任何地方调用,代表当前路由对象,这个属性是只读的,里面的属性是 immutable(不可变) 的,不过你可以 watch(监测变化) 它. 导航和钩子函数: 导航:路由正在发生 ...
- Atom 有什么优秀插件?
蓝色 ,主业三流青春校园小说作家兼反差萌段子手… 韦易笑等 130 人赞同 若是C / C++的话,我推荐ATOM的这几个插件主要用于代码补全,实时语法检测,以及代码格式调整,其实就是Clang的那一 ...
- iOS:转载:同步、异步、并行、串行的详解
理解 iOS 开发中 GCD 相关的同步(synchronization)\ 异步(asynchronization),串行(serial)\ 并行(concurrency)概念 2014年11月21 ...
- linux下C++修改文件内容
C fwrite在任意位置写入文件,并可修改文件内容 想实现类似迅雷那样下载时可以从文件半中间写入的功能 #include<stdio.h> int main() { FILE *fp; ...
- Kafka的架构设计(目前翻译最好的一稿)
转自:http://www.oschina.net/translate/kafka-design 参与翻译(4人):fbm, 飞翔的猴子, Khiyuan, nesteaa 感谢这些同志们的辛勤工作, ...
- gmock学习01---Linux配置gmock
本文目的 本文主要介绍gmock 1.6.0版本在Linux上如何部署和使用. gmock是做什么的? 使用C++手动编写mock对象将会是一件十分耗时,易于出错,枯燥乏味的事情.gmock提供一整套 ...
- XmlRpc with C#/Java【转】
最近看了几个项目都是用xmlrpc协作完成的,就做了几个测试客户端和服务器端和大家一起分享.希望能对入门的同学有帮助 关于xmlrpc的介绍和规范参考http://www.xml-rpc.net/ 下 ...