日度归档:2020年9月24日

C# 使用File.Create方法创建文件时后-报”正由另一进程使用,因此该进程无法访问此文件。”如何处理呢?


摘要:
下文讲述c#中使用File类创建文件后,再使用File 操作文件时-出现“无法访问此文件”的异常处理方法,如下所示:

问题代码展示:

//在此路径下创建一个文件  
File.Create("d:\\test\\a.txt");
 
//立刻修改此文件的创建日期时间
File.SetCreationTime("d:\\test\\a.txt", DateTime.Parse("2021-10-10 02:00:00"));
                   

此时程序立刻报以下错误:

System.IO.IOException:“文件“d:\test\a.txt”正由另一进程使用,因此该进程无法访问此文件。”

问题原理分析:

  出现这种问题原因为:
     文件被其它进程占用未释放,
那么放在此处的原因就是文件被第一个File.Create创建后未释放

找到出题出现原因后,我们只需释放其句柄即可,但是由于File是一个静态类,
所以此处我们只需采用以下方式即可处理此异常,如下所示:

问题解决方法:
   
    方式1:创建完毕后,直接使用Close方法关闭进程占用
      if(!File.Exists(fileName))
      {
         File.Create(fileName).Close();
      }
      File.SetCreationTime("d:\\test\\a.txt", DateTime.Parse("2021-10-10 02:00:00"));

   方式2:直接使用using关键字创建后自动关闭
     if(!File.Exists(fileName))
      {
         using(File.Create(fileName))
         {
         }
          
      }
     
 File.SetCreationTime("d:\\test\\a.txt", DateTime.Parse("2021-10-10 02:00:00"));

c#中File文件操作类简介说明


摘要:
下文讲述c#中File类的相关简介说明,如下所示;


File类功能简介

File文件操作类的功能:
可完成FileInfo类相同的功能,
并额外提供以下方法供使用

方法

作用
DateTime GetCreationTime(string path)

返回path路径对应的文件或目录的创建日期和时间
DateTime GetLastAccessTime(string path)

返回上次访问path路径对应的文件或目录的日期和时间
DateTime GetLastWriteTime(string path)

返回上次写入path路径对应的文件或目录的日期和时间
void SetCreationTime(string path, DateTime creationTime)

设置创建该文件的日期和时间
void SetLastAccessTime(string path, DateTime lastAccessTime)

设置上次访问指定文件的日期和时间
void SetLastWriteTime(string path, DateTime lastWriteTime)

设置上次写入指定文件的日期和时间
FileInfo类不是一个静态类,需使用实例的方式访问类成员,
File类是一个静态类,直接使用类名.方法名即可操作文件

例:
使用File类在D盘test文件夹下创建一个a.txt文件,
并设置其创建时间为“2021年10月10日 02:00:00”

   using System; 
using System.IO;

namespace consoleTest
{ 
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("maomao365.com示例分享");

            //判断目录是否存在
            //不存在则创建目录

            if (!Directory.Exists("d:\\test"))
            {
                Directory.CreateDirectory("d:\\test");
            }

            //实例化一个FileInfo
            //注意使用Close()创建文件后立即关闭
            File.Create("d:\\test\\a.txt").Close();
             
            File.SetCreationTime("d:\\test\\a.txt", DateTime.Parse("2021-10-10 02:00:00"));
                  
            Console.ReadLine();
        }
    }
}
c#中使用File类修改文件的创建日期时间

c#中使用File类修改文件的创建日期时间

c#中FileInfo类简介说明


摘要:
下文讲述c#中FileInfo类的相关简介说明,如下所示;


FileInfo类功能简介

FileInfo类的功能是操作文件,此类拥有对文件的创建,修改名称,
删除文件,移动文件等操作。

FileInfo类不是一个静态类,需使用实例的方式访问类成员,

FileInfo构造函数:

FileInfo(string fileName)
------参数说明----
fileName:
   是带路径的文件名
------返回值说明-----
   返回使用文件路径的实例化的FileInfo对象

FileInfo所拥有的属性和方法,如下所示:

属性或方法

作用
Directory

只读属性,返回父目录的实例
DirectoryName

只读属性,返回目录的完整路径的字符串
Exists 只读属性

检测指定文件是否存在,存在则返回true,反之则返回false
IsReadOnly 属性

获取文件的只读属性或设置文件的只读属性
Length 只读属性

返回文件的大小(字节)
Name 只读属性

获取文件的名称
Filelnfo CopyTo(string destFileName)

将现有文件复制到新文件路径下,不允许覆盖现有文件
Filelnfo CopyTo(string destFileName, bool overwrite)

将现有文件复制到新文件路径下,允许覆盖现有文件
FileStream Create()

创建文件
void Delete()

删除文件
void MoveTo(string destFileName)

移动文件至新的路径下
Filelnfo Replace(string destinationFileName, string destinationBackupFileName)

使用当前文件对象替换指定文件的内容,先删除原始文件, 再创建被替换文件的备份

例:
使用FileInfo类在D盘test文件夹下创建一个a.txt文件

using System; 
using System.IO;

namespace consoleTest
{ 
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("maomao365.com示例分享");

            //判断目录是否存在
            //不存在则创建目录

            if (!Directory.Exists("d:\\test"))
            {
                Directory.CreateDirectory("d:\\test");
            }

            //实例化一个FileInfo
            FileInfo f = new FileInfo("d:\\test\\a.txt");
            
            //创建文件
            f.Create();
 
            Console.ReadLine();
        }
    }
}