신속한 파일 경로에서 파일 이름을 얻는 방법


98

주어진 파일 경로 문자열에서 파일 이름을 얻는 방법은 무엇입니까?

예를 들어 파일 경로 문자열이

file:///Users/DeveloperTeam/Library/Developer/CoreSimulator/Devices/F33222DF-D8F0-448B-A127-C5B03C64D0DC/data/Containers/Data/Application/5D0A6264-6007-4E69-A63B-D77868EA1807/tmp/trim.D152E6EA-D19D-4E3F-8110-6EACB2833CE3.MOV

반환 결과를 다음과 같이 얻고 싶습니다.

trim.D152E6EA-D19D-4E3F-8110-6EACB2833CE3.MOV 

도와 주셔서 감사합니다.

답변:


163

목표 C

NSString* theFileName = [string lastPathComponent]

빠른

let theFileName = (string as NSString).lastPathComponent

1
다음과 같이 NSString에서만 작동한다는 것을 Swift에서 강조해야합니다. var theFileName : NSString = string.lastPathComponent // 또는 var theFileName : String = (string as NSString) .lastPathComponent
Babac

3
스위프트에, 로컬 파일 이름이된다 고 제안 으로 관리 할 URL의,하지 Strings 또는 NSStringS
bshirley

32

SWIFT 3.x 또는 SWIFT 4 :이 작업을 수행하는 가장 짧고 깨끗한 방법은 다음과 같습니다. 이 예제에서 url변수는 다음과 같은 유형입니다 URL. String확장자가 like My file name.txt및 Not like 인 전체 파일 이름의 사람이 읽을 수있는 결과를 얻을 수 있습니다.My%20file%20name.txt

// Result like: My file name.txt
let fileName = url.lastPathComponent

2
이것은 항상 이미지에 대해 asset.JPG를 반환합니다.
Harsh Nigam

Swift 3을 포함하고 더 일관된 Swift 2 답변을 참조하십시오.
Tyler A.

너무 내 - @HarshNigam
다니엘 페레이라

29

로깅 목적과 같은 현재 파일 이름을 얻으려면 이것을 사용합니다.

스위프트 4

URL(fileURLWithPath: #file).lastPathComponent

1
알아두면 좋은 정보 : init(fileURLWithPath path: __shared String, isDirectory: Bool)추가 파일 시스템 액세스를 방지하기 위해 사용 합니다. 문서에서 : 이 기능은 파일 URL이 디렉토리인지 확인하기 위해 추가 파일 시스템 액세스를 방지합니다. 이미 답을 알고 있다면 사용해야합니다.
Mark

24

스위프트 2 :

var file_name = NSURL(fileURLWithPath: path_to_file).lastPathComponent!

이것은 컴파일러 lastPathComponent가 신속하게 호출 할 때 사용하도록 말하는 방법입니다 String(으로 캐스팅하는 것과 반대 NSString).
i_am_jorf

알아두면 좋은 정보 : init(fileURLWithPath path: __shared String, isDirectory: Bool)추가 파일 시스템 액세스를 방지하기 위해 사용 합니다. 문서에서 : 이 기능은 파일 URL이 디렉토리인지 확인하기 위해 추가 파일 시스템 액세스를 방지합니다. 이미 답을 알고 있다면 사용해야합니다.
Mark

14

이 시도

let filename: String = "your file name"
let pathExtention = filename.pathExtension
let pathPrefix = filename.stringByDeletingPathExtension

업데이트 :

extension String {
    var fileURL: URL {
        return URL(fileURLWithPath: self)
    }
    var pathExtension: String {
        return fileURL.pathExtension
    }
    var lastPathComponent: String {
        return fileURL.lastPathComponent
    }
}

도움이되기를 바랍니다.


11

아래 코드는 Swift 4.X에서 저에게 효과적입니다.

 let filename = (self.pdfURL as NSString).lastPathComponent  // pdfURL is your file url
 let fileExtention = (filename as NSString).pathExtension  // get your file extension
 let pathPrefix = (filename as NSString).deletingPathExtension   // File name without extension
 self.lblFileName.text = pathPrefix  // Print name on Label

5
let theURL = URL(string: "yourURL/somePDF.pdf")  //use your URL
let fileNameWithExt = theURL?.lastPathComponent //somePDF.pdf
let fileNameLessExt = theURL?.deletingPathExtension().lastPathComponent //somePDF

이 작업을 수행하려면 URL이 문자열이 아닌 URL 유형이어야하므로 미리 문자열로 변환하지 마십시오.

이 코드를 Playground에 직접 복사하여 붙여 넣어 작동 방식을 확인할 수 있습니다.


4

아래와 같이 fileUrl에 URL을 전달할 수 있습니다.

let fileUrl: String = "https://www.himgs.com/imagenes/hello/social/hello-fb-logo.png" // Pass the URL 

let lastPathComponent = URL.init(string: fileUrl)?.lastPathComponent ?? "" // With this you will get last path component

let fileNameWithExtension = lastPathComponent

//이 마지막 경로 구성 요소는 파일 이름에 확장자를 제공합니다.


1
이것은 약간 인정받는 코드 전용 답변입니다. 설명을 추가해주세요. 이는 찬성 투표 기회를 높이고 여기에서 무료로 프로그래밍 작업을 수행 할 수 있다는 오해와 싸우는 데 도움이됩니다.
Yunnosch

1

두 개의 이전 폴더를 포함하는 고유 한 "파일 이름"양식 URL을 생성합니다.

func createFileNameFromURL (colorUrl: URL) -> String {

var arrayFolders = colorUrl.pathComponents

// -3 because last element from url is "file name" and 2 previous are folders on server
let indx = arrayFolders.count - 3
var fileName = ""

switch indx{
case 0...:
    fileName = arrayFolders[indx] + arrayFolders[indx+1] + arrayFolders[indx+2]
case -1:
    fileName = arrayFolders[indx+1] + arrayFolders[indx+2]
case -2:
    fileName = arrayFolders[indx+2]
default:
    break
}


return fileName

}


1

Swift> = 4.2의 URL에서 확장자없이 파일 이름을 검색하려면 :

let urlWithoutFileExtension: URL =  originalFileUrl.deletingPathExtension()
let fileNameWithoutExtension: String = urlWithoutFileExtension.lastPathComponent
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.