2013-04-29 9 views
18

मैं डेटाबेस में एक्सेल फ़ाइलों से डेटा स्टोर करने के लिए एक प्रोग्राम बना रहा हूं। मैं चाहता हूं कि उपयोगकर्ता कंसोल में फ़ाइल का पूरा पथ और प्रोग्राम के बाद जारी रखने के लिए केवल फ़ाइल नाम लेना चाहें।पूर्ण पथ से एक्सटेंशन के बिना फ़ाइल नाम प्राप्त करें

पूरा पथ लोड करने के लिए कोड है:

String strfullPath = ""; 
Scanner scanner = new Scanner(System.in); 
System.out.println("Please enter the fullpath of the file"); 
strfullPath = scanner.nextLine(); 
String file = strfullPath.substring(strfullPath.lastIndexOf('/') + 1); 
System.out.println(file.substring(0, file.indexOf('.'))); 

उसके बाद मैं चाहते हैं के लिए: String filename = .......

पूर्ण पथ है कि उपयोगकर्ता इस तरह होगा टाइप करेंगे: C:\\Users\\myfiles\\Documents\\test9.xls

जो फ़ाइल नाम मैं बनाउंगा वह केवल .xls के बिना नाम लेगा! क्या कोई मेरी मदद कर सकता है कि मैं यह कैसे करूं?

अगर मैं फ़ाइल नाम "test9.xls" के रूप में लेना चाहता हूं तो मैं इसे कैसे करूं? -

+0

'/' के लिए परिवर्तन '\\' * स्ट्रिंग फ़ाइल = strfullPath.substring (strfullPath.lastIndexOf ('\\') + 1); * –

+0

अगर मैं फ़ाइल नाम "test9.xls" के रूप में लेना चाहता हूं तो मैं इसे कैसे करूं? – dedmar

उत्तर

1

आप file.getName() विधि को कॉल कर सकते हैं जो फ़ाइल का नाम स्ट्रिंग के रूप में देता है। फिर आप विस्तार काट लें।

String fileName = file.getName(); 
fileName = fileName.substring(0, fileName.lastIndexOf(".")+1); 
+4

यदि फ़ाइल में कोई एक्सटेंशन नहीं है, तो 'fileName' '' "' '' '' '' 'हो जाएगा। –

+0

@AndrewThompson इसे ध्यान में रखते हुए, यह एकमात्र दृष्टिकोण है जो फ़ाइल नाम में विफल होने पर विफल नहीं होता है। " विस्तार के अलावा। – andrebola

+0

fileName.lastIndexOf ("।") होना चाहिए - 1 फ़ाइल नहीं है .lastIlastexff ("।") + 1 – Ahmed

29

आप इस तरह यह कर सकते हैं:

String fname = file.getName(); 
int pos = fname.lastIndexOf("."); 
if (pos > 0) { 
    fname = fname.substring(0, pos); 
} 

या आप apache.commons.io.FilenameUtils उपयोग कर सकते हैं:

String fileNameWithOutExt = FilenameUtils.removeExtension(fileNameWithExt); 
+1

+1 पहिया को पुन: आविष्कार नहीं करने के लिए। –

+0

FilenameUtils के लिए धन्यवाद! –

+0

प्लस वन छोटे स्निपेट का उपयोग करने के लिए जो तीसरे पक्ष के पुस्तकालयों के बजाय शुद्ध जावा कोड का उपयोग करता है। – mahmood

18

आप File क्लास का उपयोग फ़ाइल नाम पाने के लिए कर सकते हैं:

File userFile = new File(strfullPath); 
String filename = userFile.getName(); 
if (filename.indexOf(".") > 0) { 
    filename = filename.substring(0, filename.lastIndexOf(".")); 
} 
33

मैं: इससे पहले कि आप कोशिश करते हैं और यह पट्टी

if (userFile.isFile()) { 
    // Yay, it's a valid file (not a directory and not an invalid path) 
} 

तुम भी फ़ाइल की जाँच करने की जरूरत है एक विस्तार है:एक File वस्तु का उपयोग मौजूद टेक्स्ट फाइल की जांच करने की क्षमता सहित कई लाभ, है आम तौर पर इस समाधान अन्य पोस्ट में वर्णित का उपयोग करें:

import org.apache.commons.io.FilenameUtils; 

String basename = FilenameUtils.getBaseName(fileName); 
1
if (!filename.equals(""))  
{ 
     String [] fileparts = filename.split("\\."); 
     String filename = fileparts[0]; //Get first part 
} 
+0

भविष्य में सवालों के जवाब देने पर भविष्य में किसी भी कोड के नमूनों के साथ स्पष्टीकरण प्रदान करें जो यह बताएगा कि यह क्यों काम करेगा। –

संबंधित मुद्दे