c#获取并修改文件扩展名_c#获取文件后缀名的实例代码

发布时间:2020-11-29编辑:脚本学堂
c#获取并修改文件扩展名的方法,c#使用Path类改变文件扩展名的文件,并总结了c#获取文件后缀后、修改文件后缀名的多个方法。

三、c#获取并修改文件扩展名

使用Path类改变文件扩展名的文件。

Path类用来解析文件系统路径的各个部分。

静态方法Path.ChangeExtension方法可以用来改变文件扩展名。

可用Path.GetExtension方法可用来取得的文件扩展名。

代码:
 

string filePath = @"c:file.txt";
Console.WriteLine(filePath);
Console.WriteLine("Ext: {0}", Path.GetExtension(filePath));
Console.WriteLine("Change Path: {0}", Path.ChangeExtension(filePath, "bak"));

二、c#获取文件后缀名

代码:
 

复制代码 代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApp
{
/// <summary>
/// 如何获取文件后缀名(无后缀名或后缀名被修改)
/// </summary>
public class FileTypeDetector
{
static Dictionary<string, string> FileTypes = new Dictionary<string, string>();

static FileTypeDetector()
{
FileTypes.Add("FFD8FFE1", "jpg");
FileTypes.Add("FFD8FFE0", "jpg");
FileTypes.Add("89504E47", "png");
FileTypes.Add("47494638", "gif");
FileTypes.Add("49492A00", "tif");
FileTypes.Add("424D", "bmp");
FileTypes.Add("41433130", "dwg");
FileTypes.Add("38425053", "psd");
FileTypes.Add("7B5C727466", "rtf");
FileTypes.Add("3C3F786D6C", "xml");
FileTypes.Add("68746D6C3E", "html");
FileTypes.Add("44656C69766572792D646174", "eml");
FileTypes.Add("CFAD12FEC5FD746F ", "dbx");
FileTypes.Add("2142444E", "pst");
FileTypes.Add("D0CF11E0", "xls/doc");
FileTypes.Add("5374616E64617264204A", "mdb");
FileTypes.Add("FF575043", "wpd");
FileTypes.Add("252150532D41646F6265", "eps/ps");
FileTypes.Add("255044462D312E", "pdf");
FileTypes.Add("E3828596", "pwl");
FileTypes.Add("504B0304", "zip");
FileTypes.Add("52617221", "rar");
FileTypes.Add("57415645", "wav");
FileTypes.Add("41564920", "avi");
FileTypes.Add("2E7261FD", "ram");
FileTypes.Add("2E524D46", "rm");
FileTypes.Add("000001BA", "mpg");
FileTypes.Add("000001B3", "mpg");
FileTypes.Add("6D6F6F76", "mov");
FileTypes.Add("3026B2758E66CF11", "asf");
FileTypes.Add("4D546864", "mid");
FileTypes.Add("2F2AE5AE", "txt");
}

private static string BytesToHexString(string fileName)
{
StringBuilder stringBuilder = new StringBuilder();
using (FileStream fis = new FileStream(fileName, FileMode.OpenOrCreate))
{
try
{
byte[] b = new byte[4];
fis.Read(b, 0, b.Length);

for (int i = 0; i < b.Length; i++)
{
int v = b[i] & 0xFF;
String hv = Convert.ToString(v, 16); //转换为16进制
if (hv.Length < 2)
{
stringBuilder.Append(0);
}
stringBuilder.Append(hv);
}
}
catch
{
}
finally
{
if (fis != null)
fis.Close();
}
}
return stringBuilder.ToString().ToUpper();
}

/// <summary>
/// 获取文件类型(默认为空)
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static string FileDetector(string fileName)
{
string head = BytesToHexString(fileName);

if (FileTypes.Keys.Contains(head))
return FileTypes[head];
return "";

}
}
}

三、 c#修改文件名与文件扩展名

代码:
 

复制代码 代码示例:

string fileName = @"c:/1.jpg";  
string dfileName = System.IO.Path.ChangeExtension(fileName, ".png");  
File.Move(fileName, dfileName);

string fileType = System.IO.Path.GetExtension(fileName);
if (!string.IsNullOrEmpty(fileType)){
    //如果扩展名不为空,
    //执行相关操作
}

四、C# 获取文件名及扩展名

代码:
 

string aFirstName = aFile.Substring(aFile.LastIndexOf("") + 1, (aFile.LastIndexOf(".") - aFile.LastIndexOf("") - 1));  //文件名
string aLastName = aFile.Substring(aFile.LastIndexOf(".") + 1, (aFile.Length - aFile.LastIndexOf(".") - 1));   //扩展名

string strFilePaht="文件路径";
Path.GetFileNameWithoutExtension(strFilePath);//获取文件名

用Substring截取:
 

strFilePaht.Substring(path.LastIndexOf("") + 1, path.Length - 1 - path.LastIndexOf(""));
strFilePaht.Substring(path.LastIndexOf("."), path.Length - path.LastIndexOf("."));

或者用openFileDialog1.SafeFileName

取到该文件的所在目录路径:
 

复制代码 代码示例:

string path1 = System.IO.Path.GetDirectoryName(openFileDialog1.FileName) + @"";

string path = Path.GetFileName("C:My Documentpathimage.jpg"); //只获取文件名image.jpg

string fullPath = @"WebSite1Default.aspx";

string filename = System.IO.Path.GetFileName(fullPath);//文件名  “Default.aspx”
string extension = System.IO.Path.GetExtension(fullPath);//扩展名 “.aspx”
string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(fullPath);// 没有扩展名的文件名 “Default”

System.IO.Path.GetFileNam(filePath)       //返回带扩展名的文件名
System.IO.Path.GetFileNameWithoutExtension(filePath)     //返回不带扩展名的文件名
System.IO.Path.GetDirectoryName(filePath)     //返回文件所在目录

//获取当前进程的完整路径,包含文件名(进程名)。
string str = this.GetType().Assembly.Location;
result: X:xxxxxxxxx.exe (.exe文件所在的目录+.exe文件名)

//获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。
string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
result: X:xxxxxxxxx.exe (.exe文件所在的目录+.exe文件名)

//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
string str = System.Environment.CurrentDirectory;
result: X:xxxxxx (.exe文件所在的目录)

//获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
string str = System.AppDomain.CurrentDomain.Basedirectory;
result: X:xxxxxx (.exe文件所在的目录+"")

//获取和设置包含该应用程序的目录的名称。
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
result: X:xxxxxx (.exe文件所在的目录+"")

//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str = System.Windows.Forms.Application.StartupPath;
result: X:xxxxxx (.exe文件所在的目录)

//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str = System.Windows.Forms.Application.ExecutablePath;
result: X:xxxxxxxxx.exe (.exe文件所在的目录+.exe文件名)

//获取应用程序的当前工作目录(不可靠)。
string str = System.IO.Directory.GetCurrentDirectory();
result: X:xxxxxx (.exe文件所在的目录)