답변:
이 Path.GetFileNameWithoutExtension
방법은 이름에서 알 수 있듯이 확장명없이 인수로 전달한 파일 이름을 제공합니다.
이 목적을 위해 프레임 워크에는 확장을 제외하고 전체 경로를 유지하는 방법이 있습니다.
System.IO.Path.ChangeExtension(path, null);
파일 이름 만 필요한 경우
System.IO.Path.GetFileNameWithoutExtension(path);
null
여기에 마법의 값을 갖는다. String.Empty
일명 사용 ""
하면 후행 [ .
] 점이 남습니다 .
GetFileNameWithoutExtension
더 명시 적입니다. 잠재적으로 원하지 않는 부작용과 그것을 피할 수있는 대안의 존재에 대해 아는 것이 좋지만.
당신이 사용할 수있는
string extension = System.IO.Path.GetExtension(filename);
그런 다음 확장 프로그램을 수동으로 제거하십시오.
string result = filename.Substring(0, filename.Length - extension.Length);
String.LastIndexOf가 작동합니다.
string fileName= "abc.123.txt";
int fileExtPos = fileName.LastIndexOf(".");
if (fileExtPos >= 0 )
fileName= fileName.Substring(0, fileExtPos);
foo/bar.cat/cheese
! 와 같이 확장자가없는 파일을주의하십시오 .
String.LastIndexOf
이와 같은 것을 달성하는 것은 위험합니다. @Cameron이 위에서 언급 한 것처럼 확장명이없는 파일의 경우 결과가 원하는 결과가 아닐 수 있습니다. 가장 안전한 방법은 위의 @ Logman 's answer을
아래 코드를 사용했습니다.
string fileName = "C:\file.docx";
MessageBox.Show(Path.Combine(Path.GetDirectoryName(fileName),Path.GetFileNameWithoutExtension(fileName)));
출력은
C : \ 파일
Path.Combine()
지정하지 말고 사용하십시오 "\\"
.
나는 그것이 오래된 질문이며 Path.GetFileNameWithoutExtension
더 좋고 아마도 더 깨끗한 옵션이라는 것을 알고 있습니다. 그러나 개인적 으로이 두 가지 방법을 내 프로젝트에 추가하고 공유하고 싶었습니다. 범위와 인덱스를 사용하기 때문에 C # 8.0이 필요합니다.
public static string RemoveExtension(this string file) => ReplaceExtension(file, null);
public static string ReplaceExtension(this string file, string extension)
{
var split = file.Split('.');
if (string.IsNullOrEmpty(extension))
return string.Join(".", split[..^1]);
split[^1] = extension;
return string.Join(".", split);
}
/// <summary>
/// Get the extension from the given filename
/// </summary>
/// <param name="fileName">the given filename ie:abc.123.txt</param>
/// <returns>the extension ie:txt</returns>
public static string GetFileExtension(this string fileName)
{
string ext = string.Empty;
int fileExtPos = fileName.LastIndexOf(".", StringComparison.Ordinal);
if (fileExtPos >= 0)
ext = fileName.Substring(fileExtPos, fileName.Length - fileExtPos);
return ext;
}
private void btnfilebrowse_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
//dlg.ShowDialog();
dlg.Filter = "CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml";
if (dlg.ShowDialog() == DialogResult.OK)
{
string fileName;
fileName = dlg.FileName;
string filecopy;
filecopy = dlg.FileName;
filecopy = Path.GetFileName(filecopy);
string strFilename;
strFilename = filecopy;
strFilename = strFilename.Substring(0, strFilename.LastIndexOf('.'));
//fileName = Path.GetFileName(fileName);
txtfilepath.Text = strFilename;
string filedest = System.IO.Path.GetFullPath(".\\Excels_Read\\'"+txtfilepath.Text+"'.csv");
// filedest = "C:\\Users\\adm\\Documents\\Visual Studio 2010\\Projects\\ConvertFile\\ConvertFile\\Excels_Read";
FileInfo file = new FileInfo(fileName);
file.CopyTo(filedest);
// File.Copy(fileName, filedest,true);
MessageBox.Show("Import Done!!!");
}
}