文件IO操作..修改文件的只读属性
文件的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操作..修改文件的只读属性的更多相关文章
- 【Linux 应用编程】文件IO操作 - 常用函数
Linux 系统中的各种输入输出,设计为"一切皆文件".各种各样的IO统一用文件形式访问. 文件类型及基本操作 Linux 系统的大部分系统资源都以文件形式提供给用户读写.这些文件 ...
- Linux文件IO操作
来源:微信公众号「编程学习基地」 目录 文件操作 Linux文件类型 Linux文件权限 修改文件权限 Linux error 获取系统调用时的错误描述 打印错误信息 系统IO函数 open/clos ...
- 文件IO操作
前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...
- 树莓派学习笔记——使用文件IO操作GPIO SysFs方式
0 前言 本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...
- Linux学习记录--文件IO操作相关系统编程
文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...
- linux文件IO操作篇 (一) 非缓冲文件
文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO 它们的接口区别是 非缓冲 open() close() read() write() 缓冲 fopen() fclose() fread() ...
- imx6用文件io操作gpio
具体请参考: http://blog.csdn.net/u014213012/article/details/53140781 这里要注意的是: 要让linux支持文件io方式操作gpio,首先驱动必 ...
- 9.2 Go 文件IO操作
9.2 Go 文件IO操作 1.1.1. bufio包 带有缓冲区的IO读写操作,用于读写文件,以及读取键盘输入 func main() { //NewReader返回一个结构体对象指针 reader ...
- 背水一战 Windows 10 (87) - 文件系统: 获取文件的属性, 修改文件的属性, 获取文件的缩略图
[源码下载] 背水一战 Windows 10 (87) - 文件系统: 获取文件的属性, 修改文件的属性, 获取文件的缩略图 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 获 ...
随机推荐
- iOS系列 基础篇 03 探究应用生命周期
iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...
- 随机生成长度为len的密码,且包括大写、小写英文字母和数字
一道华三面试题,随机生成长度为len的密码,且包括大写.小写英文字母和数字,主要Random类的使用,random.nextInt(len)表示生成[0,len)整数.具体实现见下面代码,已经很详细了 ...
- Spring 资源文件处理
Java中,不同来源的资源抽象成URL,通过注册不同的handler(URLStreamHandler)来处理不同来源的资源的读取逻辑.一般handler的类型使用不同的前缀(协议,protocal) ...
- 远程管理无管理员权限的PC客户端
一.简介 为提高操作系统稳定性.流畅度,分公司同事PC用户没有administrator权限,导致同事不能对系统进行设置.不能自行安装软件.网管使用远程管理软件(如Teamviewer.QQ)为同事提 ...
- L1-006. 连续因子
https://www.patest.cn/contests/gplt/L1-006 题目地址 在上面 一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为3*5*6*7,其中5.6.7就 ...
- struts2实现文件上传(多文件上传)及下载
一.要实现文件上传,需在项目中添加两个jar文件 二.上传准备的页面 注:必须植入enctype="multipart/form-data"属性,以及提交方式要设置成post &l ...
- javascript中的原型和继承
javascript一直是初学者口中的难点,甚至一些有些许工作经验的人也不太明白其中的原理,而我就是那个初学者,前段时间在阮一峰老师的博客上看了一篇文章<javascript继承机制的设计思想& ...
- 洛谷P2256 一中校运会之百米跑
题目背景 在一大堆秀恩爱的**之中,来不及秀恩爱的苏大学神踏着坚定(?)的步伐走向了100米跑的起点.这时苏大学神发现,百米赛跑的参赛同学实在是太多了,连体育老师也忙不过来.这时体育老师发现了身为体育 ...
- [LeetCode] Strong Password Checker 密码强度检查器
A password is considered strong if below conditions are all met: It has at least 6 characters and at ...
- [LeetCode] Largest Number 最大组合数
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...