확장자없이 파일 이름 얻기
특정 폴더에서 파일 이름을 가져올 때 :
DirectoryInfo di = new DirectoryInfo(currentDirName);
FileInfo[] smFiles = di.GetFiles("*.txt");
foreach (FileInfo fi in smFiles)
{
builder.Append(fi.Name);
builder.Append(", ");
...
}
fi.Name
나에게 그것의 확장자를 가진 파일 이름을 제공 : file1.txt
, file2.txt
, file3.txt
.
확장자없이 파일 이름을 얻으려면 어떻게해야합니까? ( file1
, file2
, file3
)
당신은 사용할 수 있습니다 Path.GetFileNameWithoutExtension
:
foreach (FileInfo fi in smFiles)
{
builder.Append(Path.GetFileNameWithoutExtension(fi.Name));
builder.Append(", ");
}
나는 이것을 직접 얻을 수있는 방법이 없다는 것에 놀랐지 만 FileInfo
(또는 적어도 그것을 볼 수는 없다).
사용하십시오 Path.GetFileNameWithoutExtension()
.
이 솔루션은 또한 후행 쉼표를 추가하지 못하게합니다.
var filenames = String.Join(
", ",
Directory.GetFiles(@"c:\", "*.txt")
.Select(filename =>
Path.GetFileNameWithoutExtension(filename)));
이 시나리오에서는 DirectoryInfo, FileInfo가 마음에 들지 않습니다.
DirectoryInfo 및 FileInfo는 필요한 것보다 많은 폴더와 파일에 대한 데이터를 수집하므로 필요한 것보다 많은 시간과 메모리를 소비합니다.
사용하십시오 Path.GetFileNameWithoutExtension
. 경로는 System.IO 네임 스페이스에 있습니다.
Path.GetFileNameWithoutExtension(file);
확장명없이 파일 이름 만 반환합니다. 이름과 파일 형식을 모두 얻을 수 있도록 변경할 수도 있습니다.
Path.GetFileName(FileName);
출처 : https://msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx
추가 답변으로 (또는 기존 답변을 합성하기 위해) DirectoryInfo 클래스 내에서이를 위해 확장 메소드를 작성할 수 있습니다. 다음은 디렉토리 이름 또는 기타 수정 기준 등을 제공하기 위해 꾸며질 수있는 상당히 빨리 작성한 샘플입니다.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace DocumentDistributor.Library
{
public static class myExtensions
{
public static string[] GetFileNamesWithoutFileExtensions(this DirectoryInfo di)
{
FileInfo[] fi = di.GetFiles();
List<string> returnValue = new List<string>();
for (int i = 0; i < fi.Length; i++)
{
returnValue.Add(Path.GetFileNameWithoutExtension(fi[i].FullName));
}
return returnValue.ToArray<string>();
}
}
}
편집 : 또한이 방법이 배열 구성을 달성하기 위해 LINQ를 사용하면 단순화되거나 멋지게 될 수 있다고 생각하지만 LINQ에서 이러한 종류의 샘플을 충분히 빨리 수행 할 수있는 경험이 없습니다.
편집 2 (거의 4 년 후) : 내가 사용할 LINQ 인증 방법은 다음과 같습니다.
public static class myExtensions
{
public static IEnumerable<string> GetFileNamesWithoutExtensions(this DirectoryInfo di)
{
return di.GetFiles()
.Select(x => Path.GetFileNameWithoutExtension(x.FullName));
}
}
파일 이름에 디렉토리가 포함되어 있고 디렉토리를 잃을 필요가없는 경우 :
fileName.Remove(fileName.LastIndexOf("."))
FileInfo
자체 확장명을 알고 있으므로 제거 할 수 있습니다.
fileInfo.Name.Replace(fileInfo.Extension, "");
fileInfo.FullName.Replace(fileInfo.Extension, "");
또는 중간에 나타날 수있는 편집증이 있거나 미세 최적화를 원할 경우 :
file.Name.Substring(0, file.Name.Length - file.Extension.Length)
기록만을 위해서:
DirectoryInfo di = new DirectoryInfo(currentDirName);
FileInfo[] smFiles = di.GetFiles("*.txt");
string fileNames = String.Join(", ", smFiles.Select<FileInfo, string>(fi => Path.GetFileNameWithoutExtension(fi.FullName)));
이 방법은 사용하지 StringBuilder
않지만 String.Join()
. 또한 다른 답변 중 하나에서 보지 않았으므로 Path.GetFileNameWithoutExtension()
전체 경로 ( fi.FullName
) 가 필요 하다는 점을 언급하십시오 fi.Name
.
이 시도,
string FileNameAndExtension = "bılah bılah.pdf";
string FileName = FileNameAndExtension.Split('.')[0];
using System;
using System.IO;
public class GetwithoutExtension
{
public static void Main()
{
//D:Dir dhould exists in ur system
DirectoryInfo dir1 = new DirectoryInfo(@"D:Dir");
FileInfo [] files = dir1.GetFiles("*xls", SearchOption.AllDirectories);
foreach (FileInfo f in files)
{
string filename = f.Name.ToString();
filename= filename.Replace(".xls", "");
Console.WriteLine(filename);
}
Console.ReadKey();
}
}
참고 URL : https://stackoverflow.com/questions/4804990/getting-file-names-without-extensions
'development' 카테고리의 다른 글
IntelliJ IDEA를 사용하여 Java 코드 라인을 계산하는 방법은 무엇입니까? (0) | 2020.03.31 |
---|---|
SQL Server에서 날짜 시간을 자르려면 어떻게해야합니까? (0) | 2020.03.31 |
CSS를 사용하여 3 div를 나란히 플로팅하는 방법은 무엇입니까? (0) | 2020.03.31 |
C에서 MIN과 MAX (0) | 2020.03.31 |
LIKE 와일드 카드를 사용하여 열에서 어떻게 대소 문자를 구분하지 않고 검색 할 수 있습니까? (0) | 2020.03.31 |