文件的IO操作..很多同行的IO工具类都是直接写..但是如果文件有只读属性的话..则会写入失败..所以附加了一个只读的判断和修改..

代码如下:

        /// <summary>
/// 创建文件或者附加内容
/// </summary>
/// <param name="modelsStr">要写入的文本</param>
/// <param name="Encoding">编码方式</param>
/// <param name="filePath">文件路径(支持相对路径或绝对路径)</param>
/// <param name="IsFullPath">是否是绝对路径</param>
/// <param name="IsAppend">附加还是全新写入</param>
/// <returns></returns>
public static bool Write(string modelsStr, string encoding, string filePath, bool IsFullPath, bool IsAppend)
{
encoding = string.IsNullOrEmpty(encoding) ? Config.DefaultEncoding : encoding;
//文件的绝对路径 web程序和winform程序的获取方法是不一样的
filePath = IsFullPath ? filePath : System.Web.HttpContext.Current == null ? System.IO.Directory.GetCurrentDirectory() + filePath : System.Web.HttpContext.Current.Server.MapPath(filePath);
//获取文件对象
FileInfo File = new FileInfo(filePath);
//判断文件夹是否创建
if (!File.Directory.Exists) { File.Directory.Create(); }
//判断文件是否存在
if (!File.Exists)
{
using (File.Create()){}
}
else if (File.Attributes.ToString().IndexOf("ReadOnly") != -) //判断文件属性是否只读
{
File.IsReadOnly = false; //********************************************
//网上很多教程是这么写的..但是发现有问题..
// 注意: 请在复制代码后把下边这一行删掉
File.Attributes = FileAttributes.Normal;
//********************************************
} try
{
//将内容覆盖或者追加到文件的最后
using (StreamWriter writer = new StreamWriter(File.FullName, IsAppend, Encoding.GetEncoding(encoding)))
{
writer.Write(modelsStr);
writer.Flush();
}
return true;
}
catch (Exception ex)
{
Console.Write(ex.Message);
Logger.Error(ex);
return false;
}
}

  请注意中间注释的位置..

使用了

File.Attributes = FileAttributes.Normal;

  之后..会有两个问题:

  1. 文件如果有隐藏属性或者其他的属性..将被丢弃..也就是说不单单修改了文件的只读..也把其他的属性丢掉了..

  2. 在下边的写入操作中会直接抛错..显示文件被占用..但是也不是全都会报错..Some Time 吧..

下边是猜测..别当真..说的不对的..请过路大仙指正..

用鼠标直接打开文件夹点开文件属性勾掉文件只读时..会有一段的反应时间..但是在使用上述代码的时候没有这个时间..所以我在想是不是修改了FileInfo对象后..有一段的时间给程序去修改文件夹中的文件属性..而这个操作是后台的..不会使程序停滞..导致程序的下一行创建 StreamWriter的时候直接显示文件被占用.. 猜测而已..请指正..

总之..建议在做IO的只读属性的时候..还是使用ReadOnly来的比较合适..

文件IO操作..修改文件的只读属性的更多相关文章

  1. 【Linux 应用编程】文件IO操作 - 常用函数

    Linux 系统中的各种输入输出,设计为"一切皆文件".各种各样的IO统一用文件形式访问. 文件类型及基本操作 Linux 系统的大部分系统资源都以文件形式提供给用户读写.这些文件 ...

  2. Linux文件IO操作

    来源:微信公众号「编程学习基地」 目录 文件操作 Linux文件类型 Linux文件权限 修改文件权限 Linux error 获取系统调用时的错误描述 打印错误信息 系统IO函数 open/clos ...

  3. 文件IO操作

    前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...

  4. 树莓派学习笔记——使用文件IO操作GPIO SysFs方式

    0 前言     本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...

  5. Linux学习记录--文件IO操作相关系统编程

    文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...

  6. linux文件IO操作篇 (一) 非缓冲文件

    文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO 它们的接口区别是 非缓冲 open() close() read() write() 缓冲 fopen() fclose() fread() ...

  7. imx6用文件io操作gpio

    具体请参考: http://blog.csdn.net/u014213012/article/details/53140781 这里要注意的是: 要让linux支持文件io方式操作gpio,首先驱动必 ...

  8. 9.2 Go 文件IO操作

    9.2 Go 文件IO操作 1.1.1. bufio包 带有缓冲区的IO读写操作,用于读写文件,以及读取键盘输入 func main() { //NewReader返回一个结构体对象指针 reader ...

  9. 背水一战 Windows 10 (87) - 文件系统: 获取文件的属性, 修改文件的属性, 获取文件的缩略图

    [源码下载] 背水一战 Windows 10 (87) - 文件系统: 获取文件的属性, 修改文件的属性, 获取文件的缩略图 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 获 ...

随机推荐

  1. Storm UI 说明

    原文: http://blog.sina.com.cn/s/blog_5c51172c0102v26g.html

  2. linux 安装mysql数据库——yum安装法

    mysql数据库有多种安装方式,本文只介绍在Linux服务器上最实用.最快捷的mysql server安装方法.一.Linux服务器yum安装(CentOS6.3 64位) 所有在服务器上执行的命令, ...

  3. 理解Docker(3):Docker 使用 Linux namespace 隔离容器的运行环境

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  4. hdu1032 Train Problem II (卡特兰数)

    题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能.    (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...

  5. Django之Form组件

    Django之Form组件 本节内容 基本使用 form中字段和插件 自定义验证规则 动态加载数据到form中 1. 基本使用 django中的Form组件有以下几个功能: 生成HTML标签 验证用户 ...

  6. 在Windows7上如何找到Cookie(亲测100%可找到)

    摘要 出于兴趣爱好,前一阵子做了一个网页,网页中需要用到Cookie,但是,根据书上的说明,并没有找打教材中所说的Cookie的位置,本文就主要介绍在计算机(Win7)中Cookie的存放位置,同样适 ...

  7. .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制

    项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢 ...

  8. chrome中获取元素的样式

    以获取背景颜色为例 html部分 <div id="test">abcd</div> css部分 #test { background-color: rgb ...

  9. 【WPF】WPF 布局

    1.window 类继承自 ContentControl 所以内部只能有一个元素2.遵循原则:            不应显示的设置元素(控件)尺寸,可以通过设置最大最小尺寸来限制大小         ...

  10. JSONP跨域操作

    JSP <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3. ...