2010-07-04 11 views

उत्तर

11

आप उमास्क से सीधे नहीं फंस सकते हैं, क्योंकि जावा एक अमूर्त है और उमास्क पॉज़िक्स-कार्यान्वयन विशिष्ट है।

File f; 
f.setExecutable(true); 
f.setReadable(false); 
f.setWritable(true); 

कुछ अधिक API उपलब्ध हैं, check the docs: लेकिन आप निम्नलिखित एपीआई की है।

आप चाहिए umask के लिए सीधी पहुँच है, तो या तो JNI और chmod() syscall के माध्यम से करते हैं या फिर exec("chmod") के साथ एक नई प्रक्रिया अंडे।

+0

हम्म दिलचस्प है, धन्यवाद। मुझे लगता है कि मैं umask (2) को कॉल करने के लिए जेएनआई का उपयोग कर सकता हूं? – eeee

+0

@eeee यकीन है, लेकिन आप इसे लगभग परिभाषा मंच द्वारा निर्भर है के रूप में, सभी प्लेटफार्मों आप का समर्थन करना चाहते करने के लिए अपने JNI मॉड्यूल तैनात करने के लिए होगा। – extraneon

+0

@extraneon हाँ, ज़ाहिर है। ईमानदार होने के लिए मैं बहुत हैरान हूं कि किसी ने भी जावा के लिए सभी पॉजिक्स इंटरफेस को उजागर करने के लिए मॉड्यूल नहीं बनाया है। मेरा मतलब है, यह सही नहीं हो सकता है - है ना? लोग इस तरह की चीज़ के बिना जावा में सिस्टम गतिविधियों को कैसे करते हैं? – eeee

1

जावा SE में java.nio.file.attribute.PosixFileAttributes 7.

+1

मुझे उमास्क विशेष रूप से केवल फ़ाइल अनुमतियों को सेट करने के लिए कोई फ़ंक्शन नहीं मिला। – Nakedible

+0

@ नग्न्य हां। –

0

एक और दृष्टिकोण एक 3-पक्ष जावा पुस्तकालय है कि POSIX सिस्टम कॉल को उजागर करता है उपयोग करने के लिए है, जैसे

  • Jtux
  • "Posix for Java" पुस्तकालय,
  • और इतने पर ("जावा POSIX पुस्तकालय" के लिए गूगल)।

इस दृष्टिकोण के साथ समस्या यह है कि आंतरिक रूप से गैर-पोर्टेबल है (एक गैर POSIX शिकायत मंच पर काम नहीं करेगा), और एक प्लेटफ़ॉर्म-विशिष्ट देशी पुस्तकालय की आवश्यकता है ... और कहा कि जरूरत पर जोर देता है कि सभी है।

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

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