फ़ाइलपथ से फ़ाइल नाम को स्विफ्ट में कैसे प्राप्त करें


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

उद्देश्य सी

NSString* theFileName = [string lastPathComponent]

तीव्र

let theFileName = (string as NSString).lastPathComponent

1
हो सकता है कि आप स्विफ्ट में इस बात को उजागर करें कि यह केवल NSString के लिए काम करता है, जैसे: var theFileName: NSString = string.lastPathComponent // या var theFileName: String = (string as NSString) .lastPathComponent
Babac

3
स्विफ्ट में, स्थानीय URLStringNSString
फाइलनामों

32

SWIFT 3.x या SWIFT 4: ऐसा करने का सबसे छोटा और साफ तरीका नीचे है। इस उदाहरण में urlवेरिएबल URLइस तरह से है जैसे हमारे पास Stringपूर्ण फ़ाइल नाम का एक मानव पठनीय परिणाम हो सकता है जैसे एक्सटेंशन My file name.txtऔर न कि पसंदMy%20file%20name.txt

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

2
यह हमेशा संपत्ति देता है। छवियों के लिए जेपीजी।
हर्ष निगम

स्विफ्ट 2 जवाब देखें जिसमें स्विफ्ट 3 शामिल है और अधिक सुसंगत है।
टायलर ए।

मेरा भी - @ हर्षनिगम
डैनियल परेरा

28

यदि आप वर्तमान फ़ाइल नाम को प्राप्त करना चाहते हैं जैसे कि लॉगिंग उद्देश्यों के लिए, मैं इसका उपयोग करता हूं।

स्विफ्ट 4

URL(fileURLWithPath: #file).lastPathComponent

1
पता करने के लिए अच्छा है: init(fileURLWithPath path: __shared String, isDirectory: Bool)एक अतिरिक्त फ़ाइल सिस्टम एक्सेस से बचने के लिए उपयोग करें। डॉक्स से: यह फ़ंक्शन यह जांचने के लिए एक अतिरिक्त फ़ाइल सिस्टम एक्सेस से बचता है कि फाइल URL एक निर्देशिका है या नहीं। यदि आप पहले से ही उत्तर जानते हैं तो आपको इसका उपयोग करना चाहिए।
मार्क

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 एक निर्देशिका है या नहीं। यदि आप पहले से ही उत्तर जानते हैं तो आपको इसका उपयोग करना चाहिए।
मार्क

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

नीचे कोड स्विफ्ट 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 का होना चाहिए न कि स्ट्रिंग का ताकि इसे हाथ से पहले स्ट्रिंग में परिवर्तित न करें।

आप इस कोड को खेल के मैदान में सीधे कॉपी और पेस्ट कर सकते हैं कि यह कैसे काम करता है।


4

आप filelrl में 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
यह थोड़ा-सा सराहा गया कोड-ही जवाब है। कृपया कुछ स्पष्टीकरण जोड़ें। इससे अपवोट के लिए आपके मौके बेहतर होंगे और गलतफहमी से लड़ने में भी मदद मिलती है जिससे आप यहां प्रोग्रामिंग का काम मुफ्त में कर सकते हैं।
यून्नोस्क

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

स्विफ्ट> = 4.2 में एक URL से इसके विस्तार के बिना फ़ाइल नाम प्राप्त करने के लिए:

let urlWithoutFileExtension: URL =  originalFileUrl.deletingPathExtension()
let fileNameWithoutExtension: String = urlWithoutFileExtension.lastPathComponent
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.