三、c#获取并修改文件扩展名
使用Path类改变文件扩展名的文件。
Path类用来解析文件系统路径的各个部分。
静态方法Path.ChangeExtension方法可以用来改变文件扩展名。
可用Path.GetExtension方法可用来取得的文件扩展名。
代码:
二、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截取:
或者用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文件所在的目录)