創建時間是文件存入到電腦中的時間,而修改時間則是改變起內容的最后時間
// 讀取文件的創建、修改、訪問時間 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
