文件操作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 ...
随机推荐
- 【动态规划】【二分】Petrozavodsk Winter Training Camp 2017 Day 1: Jagiellonian U Contest, Monday, January 30, 2017 Problem B. Dissertation
题意: 给定S1串,长度100w,S2串,长度1k.问它俩的LCS. f(i,j)表示S2串前i个字符,LCS为j时,最少需要的S1串的前缀长度.转移的时候,枚举下一个字符在S1的位置即可.(可以预处 ...
- python基础之if,while,for
流程控制之if判断 根据女性年龄不同的不同叫法,如: age = 24 if age < 18: print('小妹妹好') elif age <28: print('小姐姐好') els ...
- nginx和php-fpm的用户权限
启动php-fpm sudo php-fpm -c /etc/php.ini [17-Sep-2018 00:36:59] ERROR: [pool www] please specify user ...
- 消除重复 Exercise07_15
import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:消除重复 */ public class Exercise07_15 { ...
- PYTHON之爬虫学习(一)基础
关于python爬虫,大家都很熟悉,那么我就不多说,开始做了. 首先,python爬虫先安装python库,主要是requests库,在windows中cmd中输入,pip install reque ...
- .net设置中GridView自适应列宽
有一个项目只有30分钟开发时间,速成,使用了古老的.net gridview. 但需要列宽自适应好看些. 于是琢磨了,实现思路如下. 先看下大致效果(很粗暴没有优化) 代码如下: protected ...
- Linux音频驱动简述
一.数字音频 音频信号是一种连续变化的模拟信号,但计算机仅仅能处理和记录二进制的数字信号.由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才干送到计算机中作进一步的处理. 数字音频系 ...
- ylbtech-LanguageSamples-Pinvoke(平台调用)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Pinvoke(平台调用) 1.A,示例(Sample) 返回顶部 “平台调用”示例 本 ...
- python学习:Windows 下 Python easy_install 的安装
Windows 下 Python easy_install 的安装 下载安装python安装工具下载地址:http://pypi.python.org/pypi/setuptools 可以找到 ...
- tracepath 路由跟踪命令
[root@c1 scripts]# tracepath 100.2.4.144 (备注:linux系统) 1: c1.nulige.com (100.2.4.144) 0.047ms pmtu ...