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的更多相关文章

  1. asp.net文件操作类

    /** 文件操作类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; usin ...

  2. C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名

    原文:C# 文件操作(全部) 追加.拷贝.删除.移动文件.创建目录 修改文件名.文件夹名 本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归 ...

  3. C#对文件操作(基本的读写以及压缩和解压)

    主要是针对单个文件进行读写操作和压缩操作:用到的主要C#类有FileStream.FileInfo.StreamWrite.StreamRead.GZipStream. 字符数组和字节数组的转换: ] ...

  4. c#之文件操作(学习笔记)

    File类和Directory类 FileInfo类 需要提供一个文件路径来创建一个FileInfo类实例对象,FileInfo提供很多类似File的方法,在选择使用File还是FileInfo时应遵 ...

  5. Unity3D学习笔记(二十五):文件操作

    文件是什么? 存储在硬盘上的最后的节点. 文件夹是什么? 文件的上级单位称为文件夹. 文件夹的基本结构? 文件夹是层级化结构的,对于同级的文件夹不可以重名,父文件夹和子文件夹可以同名> IO:I ...

  6. 【基础巩固】文件流读写、大文件移动 FileStream StreamWriter File Path Directory/ ,m资料管理器(递归)

    C#获取文件名 扩展名 string fullPath = @"d:\test\default.avi"; string filename = Path.GetFileName(f ...

  7. C# 文件操作(摘抄)

    ——选自<c# 编程兵书>第11章 张志强 胡君 编著 11 文件操作概述 11.1 驱动器 在Windows操作系统中,存储介质统称为驱动器,硬盘由于可以划分为多个区域,每一个区域称为一 ...

  8. C# 文件操作【转】

    本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内 ...

  9. C#文件操作 File(静态类)

      操作某一个文件/文件夹,需要一个文件的完整路径 一.使用File的静态方法进行文件操作 1 2 3 4 5 6 7 8 9 //使用file的静态方法进行复制             File.C ...

随机推荐

  1. 【矩阵乘法】OpenJ_POJ - C17F - A Simple Math Problem

    算(7+4*sqrt(3))^n的整数部分(mod 1e9+7). 容易想到矩乘快速幂,但是怎么算整数部分呢? (7+4*sqrt(3))^n一定可以写成a+b*sqrt(3),同理(7-4*sqrt ...

  2. Manthan, Codefest 16 C. Spy Syndrome 2 字典树 + dp

    C. Spy Syndrome 2 题目连接: http://www.codeforces.com/contest/633/problem/C Description After observing ...

  3. #Html学习积累#分割线中间添加文字

    类似效果: ————————————xxxxx———————————————————— <!DOCTYPE HTML> <html> <head> <meta ...

  4. Android Activtity Security(转)

    Android四大组件之一--Activity安全详解. 原帖地址:http://drops.wooyun.org/tips/3936 0x00 科普 Android每一个Application都是由 ...

  5. Oracle10g 创建一个DataBase实例

    Oracle10g创建DataBase实例如下:第一步:Oracle - OraDb10g_home1 -> 配置和移植工具 -> 打开Database Configuration Ass ...

  6. 微软工具ILMerge

    释义 ILMerge是一个可用于将多个.NET程序集合并为单个程序集的实用程序. ILMerge接收一组输入程序集并将它们合并到一个目标程序集中.输入程序集列表中的第一个程序集是主程序集. 当主组件是 ...

  7. GNU C内联汇编(AT&amp;T语法)

    转:http://www.linuxso.com/linuxbiancheng/40050.html 内联汇编提供了可以在C或C++代码中创建汇编语言代码,不必连接额外的库或程序.这种方法对最终程序在 ...

  8. Android 卡顿优化 3 布局优化 工具 Hierarchy Viewer

    欲善其事, 先利其器. 分析布局, 就不得不用到Hierarchy Viewer了. 本文工具使用皆以GithubApp的详情界面RepoDetailActivity为例说明. 为了不影响阅读体验, ...

  9. 自动build服务器 CruiseControl.NET

    <cruisecontrol xmlns:cb="urn:ccnet.config.builder"> <!-- This is your CruiseContr ...

  10. Apache的Order Allow,Deny详解

    Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权. 所以,最常用的是: O ...