2010-01-21 10 views
10

मैंजावा Runtime.getRunTime()। exec और वाइल्डकार्ड?

Process p = Runtime.getRuntime().exec(); 

Process p = Runtime.getRuntime().exec(); 

का उपयोग करके जंक फ़ाइलों को निकालने का प्रयास कर रहा हूं, जब तक मैं वाइल्डकार्ड का उपयोग नहीं करता, यानी यह काम करता है:

Process p = Runtime.getRuntime().exec("/bin/rm -f specificJunkFile.java"); 

जबकि निम्न फेंकता है "ऐसी कोई फ़ाइल नहीं या निर्देशिका ":

Process p = Runtime.getRuntime().exec("/bin/rm -f *.java"); 

मुझे here रूपरेखा के रूप में सभी अच्छी चीजों को करने में सक्षम होना चाहिए, है ना?

उत्तर

8

मैं सुझाव देना चाहेंगे कि आप जावा आप के लिए ऐसा करते हैं?

  • उपयोग file.listFiles() फ़ाइलों
  • उपयोग file.getName() की सूची प्राप्त करने। उन्हें फिल्टर करने के लिए करता है, तो सरणी प्रदर्शन file.delete से अधिक
  • पुनरावृति आवश्यक होता है (स्ट्रिंग)()

लाभ: बेहतर पोर्टेबिलिटी, एक कार्यकारी()

+0

ओह मेरे ... यह एक आकर्षण की तरह काम करता है! धन्यवाद – Jakob

+2

आप सामान्य रूप से वाइल्ड कार्ड का उपयोग कैसे करते हैं। आरएम इत्यादि छोड़ दो। मान लें कि मेरे पास अपनी बाइनरी है और मुझे इसे जावा कोड से लॉन्च करना है। आप वह कैसे करेंगें? – harithski

8

वे बैश वाइल्डकार्ड हैं। उन्हें बैश खोल के भीतर व्याख्या किया जाता है। आप सीधे आरएम चला रहे हैं, इसलिए * को 'सभी फाइलों' के रूप में समझने के लिए कोई खोल नहीं है।

आप कमांड के रूप में बैश का उपयोग कर सकते हैं। उदा .:

Runtime.getRuntime().exec("/path-to/bash -c \"rm *.foo\"")

+2

ठीक है मैं कर रहा हूं: Runtime.getRuntime()। Exec ("/ bin/bash -c \" rm * .foo \ ""); और मुझे मिल रहा है: त्रुटि> *। Foo ": -c: line 0: अप्रत्याशित ईओएफ '0' से मेल खाने के दौरान यह मुझे समझ में नहीं आता ... बच निकले सही हैं? – Jakob

+0

मुझे एक ही त्रुटि मिल रही है। – harithski

0
  1. उपयोग कार्यकारी (String [] {cmd, ARG1, ARG2 ...)

  2. यहाँ एक स्ट्रिंग के रूप में परिणाम प्राप्त करने के लिए एक पूर्ण उदाहरण है।

2

Runtime.getRuntime() कार्यकारी (नई String [] { "श", "-c", "gunzip * .gz"})।

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