2009-07-06 7 views
12

मैं मानक यूनिक्स फ़ंक्शंस के साथ इंटरफेस करने के लिए जावा लाइब्रेरी की तलाश में हूं, यानी stat(), getpwuid(), readlink()क्या यूनिक्स फ़ंक्शंस की जावा लाइब्रेरी है?

यह अस्तित्व में था, और javaunix कहा जाता था। इसे 2000 में वापस जारी किया गया था। यह announcement देखें। लेकिन परियोजना पृष्ठ अब चला गया है।

क्या आज जावा में इन प्रकार के कार्यों के लिए कोई आधुनिक प्रतिस्थापन है? कोई /bin/ls -l पर सिस्टम कॉल कर सकता है और आउटपुट पार्स कर सकता है, या एक कस्टम जेएनआई विधि लिख सकता है, लेकिन ये दृष्टिकोण पुराने javaunix लाइब्रेरी का उपयोग करने से अधिक काम कर रहे हैं।

स्पष्टीकरण - आदेश, एक फ़ाइल के मालिक पता लगाने के लिए एक सी कार्यक्रम से में, यह stat() जो मालिक की यूआईडी देता बुलाना चाहिए, और फिर getpwuid() का उपयोग यूआईडी से खाते के नाम पर मिलता है। जावा में यह एक कस्टम जेएनआई विधि, या javaunix लाइब्रेरी के माध्यम से किया जा सकता है जो जेएनआई का उपयोग करता है।

उत्तर

16

मैं दो सम्मोहक परियोजनाओं के बारे में पता कर रहा हूँ:

  • posix for Java (JNI के आधार पर) [Jython से प्राप्त]
  • jna-posix (JNA के आधार पर) [JRuby से प्राप्त]

व्यक्तिगत रूप से मुझे बहुत पसंद है JNA। मेरा यह उदाहरण पर एक नजर डालें, link(2) मानचित्रण:

import com.sun.jna.Library; 
import com.sun.jna.Native; 

class Link { 

    private static final C c = 
     (C) Native.loadLibrary("c", C.class); 

    private static interface C extends Library { 

     /** see man 2 link */ 
     public int link(String oldpath, String newpath); 
    } 

    @Override 
    protected void hardLink(String from, String to) { 
     c.link(to, from); 
    } 
} 
-3

मुझे यूनिक्स फ़ंक्शंस के साथ कोई लाइब्रेरी नहीं पता है। अधिकांश कार्यों के लिए

, मेरा मानना ​​है कि आप जो चाहते हैं उसे करने के लिए आप मानक जावा एपीआई का उपयोग कर सकते हैं। उदाहरण के लिए, कुछ निर्देशिका की फ़ाइलों को पढ़ने के लिए ls कमांड का उपयोग करने की आवश्यकता नहीं है। लेकिन कुछ विशिष्ट मामलों में, जैसे stat (यह पता लगाने के लिए कि कोई फ़ाइल एक लिंक है) आपको जेएनआई का उपयोग करना होगा।

-2

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

3

JNA-POSIX वर्तमान में स्थिर है, के रूप में तक मुझे पता है।

डेवलपर्स JNR-POSIX

बनाने के लिए चला गया
संबंधित मुद्दे