用 C# 輕松讀取、改變文件的創建、修改、訪問時間


創建時間是文件存入到電腦中的時間,而修改時間則是改變起內容的最后時間
// 讀取文件的創建、修改、訪問時間
FileInfo fi = new FileInfo("C://test.txt");
Console.WriteLine(fi.CreationTime.ToString());
Console.WriteLine(fi.LastWriteTime.ToString());
Console.WriteLine(fi.LastAccessTime.ToString());

// 改變(設置)文件的創建、修改、訪問時間
File.SetCreationTime("C://test.txt", DateTime.Now.AddYears(-1));
File.SetLastWriteTime("C://test.txt", DateTime.Now.AddYears(-2));
File.SetLastAccessTime("C://test.txt", DateTime.Now.AddYears(-3));

 

FileInfo 和 File 的名稱空間是:

System.IO
================================================
以文件只讀和隱藏屬性為例,其他屬性,比如“存檔”、“系統”等,方法類似。

讀取文件只讀和隱藏屬性

FileInfo fi = new FileInfo("C://test.txt");
if ((fi.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
    Console.WriteLine("是只讀");
}
else
{
    Console.WriteLine("不是只讀");
}

if ((fi.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
{
    Console.WriteLine("是隱藏");
}
else
{
    Console.WriteLine("不是隱藏");
}

 


設置文件只讀和隱藏屬性

FileInfo fi = new FileInfo("C://test.txt");
fi.Attributes = fi.Attributes | FileAttributes.ReadOnly | FileAttributes.Hidden; // 法一
//File.SetAttributes("C://test.txt", fi.Attributes | FileAttributes.ReadOnly | FileAttributes.Hidden); // 法二

可以看出,既可通過設置 Attributes 屬性,也可通過利用 File 的 SetAttributes 方法來到目的。

說明的是,不管怎樣做,都要先獲取文件的原屬性,如果不獲取文件的原屬性,直接就是 FileAttributes.ReadOnly | FileAttributes.Hidden,那么,可能會導致一些屬性丟失,比如文件以前可能有“存檔”屬性,直接這樣設置的話,存檔屬性就丟失了。

取消文件只讀和隱藏屬性

FileInfo fi = new FileInfo("C://test.txt");
fi.Attributes = fi.Attributes & ~FileAttributes.ReadOnly & ~FileAttributes.Hidden; // 法一
//File.SetAttributes("C://test.txt", fi.Attributes & ~FileAttributes.ReadOnly & ~FileAttributes.Hidden); // 法二

類似於設置,只是一些運算符號變了。注意,網上的說法是直接設置屬性為 FileAttributes.Normal,這是不對的,這不僅取消了只讀和隱藏屬性,可能還取消了其他一些屬性,比如“存檔”。


說明

不當的屬性設置,可能導致文件無法在 Windows 資源管理器中顯示出來,但又確實存在,此時可以利用 FileAttributes.Normal 將文件顯示出來,方便操作。

 

以下轉載:

C#File以及FileInfo對文件的操作

使用File操作文件

//使用file的靜態方法進行復制
            File.Copy(path, destpath);
            //使用File的靜態方法刪除路徑下的一個文件
            File.Delete(path);
            //使用File的靜態方法移動路徑下的一個文件
            File.Move(path, destpath);
            File.ReadAllText(path); //打開一個文本文件*.txt ,讀取文件中數據,然后關閉該文件
            //寫入
            File.WriteAllText(path, "要寫入文件的字符串"); //創建一個文件,向其中寫入數據,如果此路徑下有同名文件則會覆 

PS:對文件進行寫入操作,如果路徑下有同名文件則會進行覆蓋,所以最好進行一次判斷,跟用戶交互一下在進行覆蓋

使用FileInfo操作文件

FileInfo myfile = new FileInfo(path); //聲明一個對象對某一個文件進行操作
myfile.CopyTo(destpath);  //對文件進行復制操作,復制路徑為destpath
myfile.MoveTo(destpath);  //進行移動操作
myfile.Delete();          //進行刪除操作

獲得某一文件或文件夾的詳細信息(創建日期,最后一次修改日期等等

FileInfo myfile = new FileInfo(path); //聲明一個對象對某一個文件進行操作
DateTime dt = myfile.CreationTime;  //獲取或設置文件/文件夾的創建日期
string filepath = myfile.DirectoryName; //僅能用於FileInfo,獲得完整的路徑名,路徑+文件名
bool file = myfile.Exists;              //此屬性的值表示文件或文件夾是否存在,存在會返回True
string fullname = myfile.FullName;     //獲取文件或文件夾的完整路徑名
DateTime lastTime = myfile.LastAccessTime; //獲取或設置最后一次訪問文件或文件夾的時間
DateTime lastWrite = myfile.LastWriteTime; //獲取或設置最后一次修改文件夾或文件夾的時間
string name = myfile.Name;                 //獲取文件名,不能修改哦
long length = myfile.Length;                  //返回文件的字節大小
//CreationTime,LastAccessTime,LastWriteTime都是可以被修改的。

 

如何選擇用哪一個類? File or FileInfo
Directory/File只包含靜態方法,不能被實例化,只需要提供合適的文件系統對象路徑就可以使用,使用效率較高
當只對文件或文件夾執行一次操作,使用這些就很有效。
DirectoryInfo/FileInfo 如果使用一個對象執行多個操作,使用這些類就很高效。
因為它們在構造時就讀取了文件系統對象的身份驗證和其他信息,無論調用了多少方法,都不需要再次讀取這些信息。
上面只列出了操作文件,操作文件夾則需要用DirectoryInfo或Directory 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM