아래 코드 줄을 사용하면 개별 파일의 전체 경로를 포함하는 문자열 배열을 얻습니다.
private string[] pdfFiles = Directory.GetFiles("C:\\Documents", "*.pdf");
전체 경로가 아닌 문자열에서만 파일 이름을 검색하는 방법이 있는지 알고 싶습니다.
아래 코드 줄을 사용하면 개별 파일의 전체 경로를 포함하는 문자열 배열을 얻습니다.
private string[] pdfFiles = Directory.GetFiles("C:\\Documents", "*.pdf");
전체 경로가 아닌 문자열에서만 파일 이름을 검색하는 방법이 있는지 알고 싶습니다.
답변:
Path.GetFileName전체 경로에서 파일 이름을 가져 오는 데 사용할 수 있습니다.
private string[] pdfFiles = Directory.GetFiles("C:\\Documents", "*.pdf")
.Select(Path.GetFileName)
.ToArray();
편집 : 위의 솔루션은 LINQ를 사용 하므로 최소한 .NET 3.5가 필요합니다. 다음은 이전 버전에서 작동하는 솔루션입니다.
private string[] pdfFiles = GetFileNames("C:\\Documents", "*.pdf");
private static string[] GetFileNames(string path, string filter)
{
string[] files = Directory.GetFiles(path, filter);
for(int i = 0; i < files.Length; i++)
files[i] = Path.GetFileName(files[i]);
return files;
}
using System.Linq;파일의 시작 부분에 추가 하고 System.Core아직없는 경우 어셈블리에 대한 참조를 추가합니다 . .NET 3.5 이상이 필요합니다. 필요한 경우 .NET 2.0에 대한 솔루션을 게시하겠습니다
방법 Path.GetFileName(yourFileName); (MSDN) 을 사용 하여 파일 이름 만 가져올 수 있습니다.
DirectoryInfo 및 FileInfo 클래스를 사용할 수 있습니다.
//GetFiles on DirectoryInfo returns a FileInfo object.
var pdfFiles = new DirectoryInfo("C:\\Documents").GetFiles("*.pdf");
//FileInfo has a Name property that only contains the filename part.
var firstPdfFilename = pdfFiles[0].Name;
string[] fileEntries = Directory.GetFiles(directoryPath);
foreach (var file_name in fileEntries){
string fileName = file_name.Substring(directoryPath.Length + 1);
Console.WriteLine(fileName);
}
Substring사용 하는 대신 사용하는 이유를 설명 할 수 Path있습니까?
너무 많은 방법이 있습니다 :)
첫 번째 방법 :
string[] folders = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly);
string jsonString = JsonConvert.SerializeObject(folders);
두 번째 방법 :
string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(d => d.Name).ToArray();
세 번째 방법 :
string[] folders =
new DirectoryInfo(yourPath).GetDirectories().Select(delegate(DirectoryInfo di)
{
return di.Name;
}).ToArray();
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GetNameOfFiles
{
public class Program
{
static void Main(string[] args)
{
string[] fileArray = Directory.GetFiles(@"YOUR PATH");
for (int i = 0; i < fileArray.Length; i++)
{
Console.WriteLine(fileArray[i]);
}
Console.ReadLine();
}
}
}
간단히 linq를 사용할 수 있습니다.
Directory.EnumerateFiles(LoanFolder).Select(file => Path.GetFileName(file));
참고 : 전체 컬렉션이 반환되기 전에 이름 컬렉션 열거를 시작할 수 있으므로 EnumeratesFiles는 Directory.GetFiles에 비해 더 효율적입니다.