2009-08-25 11 views
14

मैं जावा एप्लिकेशन के क्रॉस प्लेटफ़ॉर्म व्यवहार को बेहतर बनाना चाहता हूं। हालांकि, इसका परीक्षण सूट वर्तमान में /tmp निर्देशिका का अस्तित्व मानता है।/tmp के लिए सबसे अच्छी विंडो क्या है?

विंडोज प्लेटफार्म पर सबसे अच्छा समकक्ष स्थान क्या है? N.B. मैं निश्चित रूप से यह नहीं मानना ​​चाहता कि उपयोगकर्ता के पास व्यवस्थापकीय अधिकार हैं लेकिन मैं चाहता हूं कि यह कम से कम XP, Vista & Windows7 पर काम करे।

क्या कोई मौजूदा पर्यावरण चर है जो वरीयताओं के क्रम में पसंदीदा स्थानों का एक और सेट सेट करने में मदद करेगा, और/या मदद करेगा?

+0

@ "विंडोज प्लेटफ़ॉर्म पर सबसे अच्छा समतुल्य स्थान क्या है?" - सिस्टम और उपयोगकर्ता-विशिष्ट पर्यावरण चर दोनों के लिए 'मेरा कंप्यूटर' \ गुण \ उन्नत \ पर्यावरण चर के अंतर्गत जांचें; आम तौर पर 'अस्थायी फ़ोल्डर्स' वर्तमान उपयोगकर्ता के लिए स्थानीय सेटिंग्स के भीतर स्थित होते हैं; विंडोज के पुराने संस्करणों को अक्सर विंडोज के तहत एक टेम्पल फ़ोल्डर में डिफॉल्ट किया जाता है; मैं व्यक्तिगत रूप से इन फ़ोल्डरों को हमेशा "सी: \ टेम्पप" पर रीडायरेक्ट करता हूं, इसलिए मैं आसान सफाई – Hardryv

+0

ऑब्बोबो_लेक्स को मूल रूप से प्रश्न का उत्तर दे सकता हूं I _should_ ने पूछा है। एक अन्य डेवलपर ने टेस्ट सूट में टीएमपी निर्देशिका के लिए पथ को कड़ी मेहनत की थी, जैसे कि यह विंडोज़ पर नहीं चलती थी - यह न तो लिख सकती थी और न ही बाद में टेस्ट डेटा को पढ़ सकती थी और पढ़ सकती थी। मैं चीजों को बदलने के तरीके की तलाश में था ताकि परीक्षण किसी भी मंच पर tmp निर्देशिका स्थान के बारे में धारणा किए बिना चल सके। java.io.tmpdir चाल चलाना चाहिए। –

उत्तर

31

प्रणाली संपत्ति java.io.tmpdir उपयोगकर्ता के अस्थायी निर्देशिका के लिए इस्तेमाल किया जा सकता:

File tmp = new File(System.getProperty("java.io.tmpdir")); 

यह File.createTempFile में (जो किसी भी मामले में, हुड के नीचे tmpdir प्रणाली संपत्ति का उपयोग करता है) से अधिक पसंद किया जा सकता उदाहरण जहां आप temp फ़ाइलों के लिए खोज खोजना चाहते हैं (उदाहरण के लिए, आपके आवेदन के पिछले आमंत्रण से कैश डेटा, जो ऐसा लगता है जैसे यह आपके प्रश्न का मामला हो सकता है)।

आप (एक JVM तर्क) कमांड लाइन पर एक क्रम ओवरराइड प्रदान करके प्रणाली संपत्ति के मूल्य बदल सकते हैं: -Djava.io.tmpdir=C:\foo\bar

नोट:"trailing slash" issue descibed in the comments to seth's answer below प्रासंगिक File निर्माता का उपयोग करके बचा जा सकता है:

String fileName = "foobar.txt" 
String tmpPath = System.getProperty("java.io.tmpdir"); 
File tmpFile; 
tmpFile = new File(tmpPath + File.separator + fileName); //possible problem 
tmpFile = new File(new File(tmpPath), fileName); //OK! 

जाहिर खिड़कियां भी एक DOS वातावरण चर है %TEMP% जो किसी भी SCRI से इस्तेमाल किया जा सकता अंक जो आपके पास हैं

+0

हाँ - मैं हमेशा इसका उपयोग करता हूं और यह आमतौर पर – Bostone

+0

काम करता है मैं इसका भी उपयोग करता हूं। – pjp

8

java.io.File.createTempFile() का उपयोग क्यों नहीं करें?

+0

वह उन फ़ाइलों की तलाश कर रहा है जो उपयोगकर्ता की अस्थायी निर्देशिका में गिराए गए हैं, उन्हें –

+0

बनाने के विरोध में, जब लोग हार्ड कोड पथ करते हैं और माइक्रोसॉफ्ट (और अन्य कंपनियों) में पागल हो जाते हैं तो चीजें बदलती हैं ... फ्रेमवर्क कॉल/एसडीके क्या आपके दोस्त –

+1

@oxbow_lakes - मुझे java.io.tmpdir के साथ समस्याएं आई हैं http://rationalpi.wordpress.com/2007/01/26/javaiotmpdir-inconsitency/ शायद यह बदल गया है क्योंकि यह थोड़ी देर हो गया है क्योंकि मैंने जावा का उपयोग किया था – seth

0

File.createTempFile("myPrefix","mySuffix") का उपयोग करें।

2

विंडोज वर्तमान उपयोगकर्ता के अस्थायी फ़ोल्डर को देकर पर्यावरण चर टीईएमपी और टीएमपी परिभाषित करता है।

+1

आप पाते हैं कि टीएमपी केवल उन मशीनों पर मौजूद है जिनके पास डेवलपर टूल्स इंस्टॉल हैं। – ChrisW

0

यदि आप कुछ ऐसा करने पर जोर देना चाहते हैं जो विंडोज़ विशिष्ट है तो आप %temp% पर्यावरण चर का उपयोग कर सकते हैं।

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