在.NET開發中,用C#獲取文件信息是比較常見的操作。通過獲取文件信息,我們可以瞭解文件的屬性、大小、創建日期、修改日期等各種元數據信息。比如我們網站需要上傳文件,可以用擴展名稱控制上傳的類型,獲取文件的大小來限制上傳文件等。本文將介紹一系列C#中獲取文件信息的方法,幫助你輕鬆獲取所需信息併進行文件 ...
在.NET開發中,用C#獲取文件信息是比較常見的操作。通過獲取文件信息,我們可以瞭解文件的屬性、大小、創建日期、修改日期等各種元數據信息。比如我們網站需要上傳文件,可以用擴展名稱控制上傳的類型,獲取文件的大小來限制上傳文件等。本文將介紹一系列C#中獲取文件信息的方法,幫助你輕鬆獲取所需信息併進行文件處理。
1、使用`FileInfo`類獲取文件信息
C#中提供了`FileInfo`[1]類,它封裝了文件的信息和操作。通過實例化`FileInfo`[1]對象,可以輕鬆獲取文件的各種信息。
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "C:\\Users\\username\\Documents\\example.txt";
FileInfo fileInfo = new FileInfo(filePath);
Console.WriteLine("文件名稱:" + fileInfo.Name);
Console.WriteLine("文件全路徑:" + fileInfo.FullName);
Console.WriteLine("文件大小(位元組):" + fileInfo.Length);
Console.WriteLine("文件創建時間:" + fileInfo.CreationTime);
Console.WriteLine("文件最後修改時間:" + fileInfo.LastWriteTime);
// 可以根據需要獲取更多屬性
}
}
2、使用`File`類獲取文件信息
除了`FileInfo`類,C#中的`File`[2]類也提供了獲取文件信息的一些靜態方法。
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "C:\\Users\\username\\Documents\\example.txt";
// 獲取文件大小(位元組)
long fileSize = new FileInfo(filePath).Length;
Console.WriteLine("文件大小(位元組):" + fileSize);
// 獲取文件創建時間
DateTime creationTime = File.GetCreationTime(filePath);
Console.WriteLine("文件創建時間:" + creationTime);
// 獲取文件最後修改時間
DateTime lastWriteTime = File.GetLastWriteTime(filePath);
Console.WriteLine("文件最後修改時間:" + lastWriteTime);
// 獲取文件屬性
FileAttributes attributes = File.GetAttributes(filePath);
Console.WriteLine("文件屬性:" + attributes);
}
}
3、使用`Directory`類獲取目錄信息
如果需要獲取目錄下的文件信息,可以使用`Directory`[3]類。
using System;
using System.IO;
class Program
{
static void Main()
{
string directoryPath = "C:\\Users\\username\\Documents";
// 獲取目錄下的文件列表
string[] files = Directory.GetFiles(directoryPath);
foreach (string file in files)
{
Console.WriteLine("文件名:" + Path.GetFileName(file));
Console.WriteLine("文件大小(位元組):" + new FileInfo(file).Length);
Console.WriteLine("文件創建時間:" + File.GetCreationTime(file));
}
}
}
4、獲取文件的擴展名和類型
如果你要獲取文件的擴展名或類型(MIME類型)等,可以使用`Path`[4]類的一些靜態方法。
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "C:\\Users\\username\\Documents\\example.txt";
//獲取文件的全路徑
Console.WriteLine("獲取文件的全路徑:" + Path.GetFullPath(filePath););
//獲取文件所在的目錄
Console.WriteLine("獲取文件所在的目錄:" + Path.GetDirectoryName(filePath));
//獲取文件的名稱含有尾碼 example.txt
Console.WriteLine("獲取文件的名稱含有尾碼:" + Path.GetFileName(filePath));
//獲取文件的名稱沒有尾碼 example
Console.WriteLine("獲取文件的名稱沒有尾碼:" + Path.GetFileNameWithoutExtension(filePath));
//獲取路徑的尾碼擴展名稱(包含點號) .txt
Console.WriteLine("獲取路徑的尾碼擴展名稱:" + Path.GetExtension(filePath));
//獲取路徑的根目錄 C:\
Console.WriteLine("獲取路徑的根目錄:" + Path.GetPathRoot(filePath));
// 獲取文件類型(MIME類型)
string mimeType = "application/unknown"; // 預設值
if (!string.IsNullOrEmpty(extension))
{
Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(extension);
if (regKey != null && regKey.GetValue("Content Type") != null)
{
mimeType = regKey.GetValue("Content Type").ToString();
}
}
Console.WriteLine("文件類型:" + mimeType);
}
}
5、結語
無論是使用`FileInfo`類、`File`類、`Directory`類還是`Path`類,C#提供了多種獲取文件信息的方法,可以根據具體需求選擇合適的方法來獲取文件的屬性、大小、時間等信息。更多信息大家可以參考官網。希望本文對你在C#文件處理中有所幫助,歡迎留言或者吐槽。
參考:
[1] https://learn.microsoft.com/zh-cn/dotnet/api/system.io.fileinfo
[2]https://learn.microsoft.com/zh-cn/dotnet/api/system.io.file
[3]https://learn.microsoft.com/zh-cn/dotnet/api/system.io.directory
[4]https://learn.microsoft.com/zh-cn/dotnet/api/system.io.path
來源公眾號:DotNet開發跳槽