2009-06-28 11 views

उत्तर

26

बस फ़ाइल का रास्ता अंदर अपने कार्यक्रम जावा फ़ाइल वर्ग का उपयोग को संभालने के लिए यह

इस फ़ाइल पथ के रूप में पहली पैरामीटर लेता है पारित कर दिया है,:

import java.io.File; 

public class SomeProgram { 
    public static void main(String[] args) { 
     if(args.length > 0) { 
      File file = new File(args[0]); 

      // Work with your 'file' object here 
     } 
    } 
} 
+0

क्या आप मुझे "arg [0]" के साथ क्या मतलब है, इसके बारे में मुझे और बता सकते हैं मुझे कमांड लाइन विषय पढ़ने के लिए उपयोगी स्रोत नहीं मिला।: ((( – Johanna

+0

"मुख्य विधि" अनुभाग पढ़ें http://java.sun.com/docs/books/tutorial/getStarted/application/index.html पर। यह तर्कसंगत रूप से अच्छी तरह से वर्णन करता है कि "तर्क" क्या है। ट्यूटोरियल स्वयं कई उत्तरों के जवाब खोजने के लिए एक अच्छा स्रोत है आपके पास प्रश्न हैं। –

+0

@ जोहाना: तर्क [0] स्ट्रिंग सरणी को स्थिति 0 (सरणी का पहला तत्व) पर तर्क देता है। तर्क मुख्य (स्ट्रिंग [] तर्क) विधि के पैरामीटर के रूप में पास किए जाते हैं, और स्ट्रिंग्स की एक सरणी है जिसमें प्रोग्राम को पास किए गए कमांड लाइन तर्क शामिल हैं। – Sean

7
जावा में

, main विधि को स्ट्रिंग की एक सरणी तर्क के रूप में प्राप्त होती है, जैसा कि आपने शायद देखा है। आप args पैरामीटर पर एक और नाम दे सकते हैं, लेकिन यह सबसे अधिक उपयोग किया जाता है।

सरणी args कक्षा के नाम के बाद, आपके प्रोग्राम को लॉन्च करते समय उपयोगकर्ता द्वारा टाइप किए गए मूल्यों के मान शामिल हैं। उदाहरण के लिए, एक वर्ग फू नामित चलाने के लिए, उपयोगकर्ता टाइप करना होगा:

[उपयोगकर्ता @ डेस्कटॉप ~] $ जावा फू

सब कुछ उपयोगकर्ता प्रकार के बाद वर्ग के नाम एक पैरामीटर माना जाता है ।

[उपयोगकर्ता @ डेस्कटॉप ~] $ जावा फू बार baz

अब अपने कार्यक्रम प्राप्त हुआ है दो पैरामीटर: बार और baz उदाहरण के लिए। उन पैरामीटर सरणी args में संग्रहीत हैं। नियमित जावा सरणी के रूप में, पहला पैरामीटर args[0] तक पहुंचकर पुनर्प्राप्त किया जा सकता है, दूसरा पैरामीटर args[1] तक पहुंचकर पुनर्प्राप्त किया जा सकता है, और इसी तरह। यदि आप किसी अमान्य स्थिति तक पहुंचने का प्रयास करते हैं (जब उपयोगकर्ता ने आपकी अपेक्षा की कोई टाइप नहीं की थी), तो वह कथन ArrayIndexOutOfBoundsException फेंक देगा, जैसा कि यह किसी भी सरणी के साथ होगा। आप देख सकते हैं कि args.length के साथ कितने पैरामीटर टाइप किए गए थे।

तो, अपने प्रश्न पर वापस जाएं। उपयोगकर्ता एक फ़ाइल नाम को कमांड लाइन पैरामीटर के रूप में सूचित कर सकता है और आप main विधि के तर्क के माध्यम से उस मान को पढ़ सकते हैं, जिसे आमतौर पर args कहा जाता है। आपको यह जांचना होगा कि क्या उसने वास्तव में कुछ तर्क (सरणी की लंबाई की जांच) के रूप में टाइप किया है, और यदि यह ठीक है, तो आप उसे टाइप करने के लिए args[0] तक पहुंच सकते हैं। फिर, आप उस स्ट्रिंग के आधार पर File ऑब्जेक्ट बना सकते हैं, और वह करें जो आप इसके साथ करना चाहते हैं। हमेशा जांचें कि उपयोगकर्ता ने आपके द्वारा अपेक्षित पैरामीटर की संख्या टाइप की है या नहीं, अन्यथा आपको सरणी तक पहुंचने पर अपवाद मिलेगा।

यहाँ कैसे कमांड लाइन पैरामीटर का उपयोग करने का एक पूरा उदाहरण है:

public class Foo { 
    public static void main(String[] args) { 
     if (args.length == 0) { 
      System.out.println("no arguments were given."); 
     } 
     else { 
      for (String a : args) { 
       System.out.println(a); 
      } 
     } 
    } 
} 

इस वर्ग के मानकों उपयोगकर्ता द्वारा सूचित किया पार्स होगा। अगर उसने कुछ भी टाइप नहीं किया है, तो कक्षा संदेश मुद्रित करेगी "कोई तर्क नहीं दिया गया था।" अगर वह किसी भी पैरामीटर को सूचित करता है, तो उन पैरामीटर स्क्रीन पर दिखाए जाएंगे। हां, दो उदाहरण मैं इस जवाब पर दिया है के साथ इस वर्ग चल रहा है, उत्पादन होगा:

[उपयोगकर्ता @ डेस्कटॉप ~] $ जावा फू
कोई तर्क दिए गए थे।
[उपयोगकर्ता @ डेस्कटॉप ~] $ जावा फू बार baz
बार
baz

2

मेरी राय में, सबसे अच्छा अभ्यास आर्ग == 0 का पता लगाने और उपयोग के बारे में मदद आदेशों की एक सूची प्रदान करने की कोशिश की कार्यक्रम अगर कोई तर्क प्रदान नहीं किया जाता है।

+1

स्टैक ओवरव्लो में आपका स्वागत किया! मुझे लगता है कि पोस्टर यह जानना चाहता है कि अगर तर्क> 0, वास्तव में इसका समाधान कैसे किया जाए। –

0

मैंने कुछ अन्य समाधान देखा, लेकिन मुझे लगता है कि यदि आप काम करेंगे तो वे काम नहीं करेंगे। उदाहरण के लिए, कमांड लाइन तर्क के रूप में C:\Program Files\file.dat प्रदान करें। फिर यह काम नहीं करेगा, क्योंकि आप नई फ़ाइल बनाते समय केवल args[0] लेते हैं।

तो तुम वास्तव में कुछ निम्नलिखित की तरह दिए गए तर्क के सभी भागों में शामिल होने के लिए क्या करना चाहिए, और फिर इसे से एक फ़ाइल बनाने:

import java.io.File; 

public class SomeProgram { 
    public static void main(String[] args) { 
     String current = ""; 
     File lastFile = null; 
     for(String str : args){ 
      File newFile = new File((current + " " + str).trim()); 
      if(newFile.exists()){ 
       lastFile = newFile; 
      } 
     current += " " + str; 
     } 
     File yourFile = lastFile; 
    } 
} 

मैं वर्तमान में एक ऐसी ही समस्या पर काम कर रहा हूँ और यह करने के लिए लगता है छल।

+0

यह एक अच्छा समाधान है अगर कार्यक्रम में उत्तीर्ण तर्क (ओं) एक फ़ाइल पथ है जिसमें रिक्त स्थान हैं। हालांकि, कार्यक्रम में केवल एक फ़ाइल पथ पारित होने पर यह एक अच्छा दृष्टिकोण नहीं है। कार्यक्रम में भेजने से पहले उद्धरण के साथ फ़ाइल पथ को घेरना उचित तरीका है। कार्यक्रम को तब जांचना चाहिए कि प्रत्येक तर्क सही प्रकार का है, और यदि सही उपयोग केस प्रदर्शित नहीं होता है और बाहर निकलता है। –

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