Programing

C #을 사용하여 디렉토리 내에서 파일 이름 만 얻는 방법은 무엇입니까?

lottogame 2020. 11. 4. 07:39
반응형

C #을 사용하여 디렉토리 내에서 파일 이름 만 얻는 방법은 무엇입니까?


아래 코드 줄을 사용하면 개별 파일의 전체 경로를 포함하는 문자열 배열을 얻습니다.

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;
}

방법 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[] 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));

Note: EnumeratesFiles is more efficient compared to Directory.GetFiles as you can start enumerating the collection of names before the whole collection is returned.


string[] fileEntries = Directory.GetFiles(directoryPath);

foreach (var file_name in fileEntries){
    string fileName = file_name.Substring(directoryPath.Length + 1);
    Console.WriteLine(fileName);
}

참고URL : https://stackoverflow.com/questions/7140081/how-to-get-only-filenames-within-a-directory-using-c

반응형