2011-03-14 15 views
7

का उपयोग करके बनाई गई अस्थायी फ़ाइलों का स्थान बदलना मैं .xlsx फ़ाइल पढ़ने के साथ किसी समस्या के साथ फंस गया हूं। जब भी मैं WorkbookFactory.create (inputStream) का उपयोग करता हूं, तो यादृच्छिक नाम वाली कुछ अस्थायी फ़ाइलें/tmp/poifiles निर्देशिका के अंतर्गत बनाई जाती हैं; यह निर्देशिका पहले उपयोगकर्ता के लिए आरडब्ल्यू-आर-आर-अनुमति के साथ बनाई गई है। तो एक ही मशीन पर एक और उपयोगकर्ता जब इन फ़ाइलों तक पहुंचने का प्रयास करता है, तो वह नहीं कर सकता।अपाचे पीओआई

कृपया मुझे किसी भी तरह से

1) मैं कैसे/tmp/poifiles में हमेशा/tmp निर्देशिका के तहत इन अस्थायी फ़ाइलों को बनाने और नहीं कर सकते हैं (मैं RHEL V5.0 उपयोग कर रहा हूँ)

2) का सुझाव है और मैं पीओआई को कैसे कॉन्फ़िगर कर सकता हूं जैसे स्थान को अस्थायी फ़ाइलों को कहां से बदलता है ??

एनीमोर पीओआई के माध्यम से समान .xlsx फ़ाइलों तक पहुंचने वाले विभिन्न उपयोगकर्ताओं की मेरी समस्या को हल करने में मदद करता है।

उत्तर

11

Yuppie ... मैं समाधान मिल गया ....

POI अस्थायी फ़ाइलों को बनाने के लिए निम्न विधि का उपयोग करता है।

public static File createTempFile(String prefix, String suffix) 
{ 
    if (dir == null) { 
     dir = new File(System.getProperty("java.io.tmpdir"), "poifiles"); 
     dir.mkdir(); 
     if (System.getProperty("poi.keep.tmp.files") == null) { 
      dir.deleteOnExit(); 
     } 
    } 
    File newFile = new File(dir, prefix + rnd.nextInt() + suffix); 
    if (System.getProperty("poi.keep.tmp.files") == null) { 
     newFile.deleteOnExit(); 
    } 
    return newFile; 
} 

अब यहाँ के रूप में हम यह संपत्ति "java.io.tmpdir" से स्थान हो जाता है और है कि अंदर poifiles निर्देशिका बनाता है देख सकते हैं ...

मैं द्वारा java.io.tmpdir स्थान परिवर्तित कर दिया इस प्रॉपर्टी को सेट करना (System.setProperty ("java.io.tmpdir", "somepath") का उपयोग करके) उपयोगकर्ता विशिष्ट स्थान .. और वोला .... प्रत्येक उपयोगकर्ता अब उन स्थानों पर अस्थायी फ़ाइलों को बना सकता है जो हमेशा उनके लिए सुलभ होते हैं और न केवल पहले उपयोगकर्ता को केवल उनके लिए सुलभ निर्देशिका बनाने का विशेषाधिकार प्राप्त होता है ... !!!

3

यहाँ आप से जहां POI अस्थायी फ़ाइलों को प्रोग्राम के रूप में पढ़ता स्थान कैसे बदल सकते हैं अगर आप प्रणाली संपत्ति बदलने के लिए "java.io.tmpdir"

File dir = new File("somepath"); 
dir.mkdir(); 
TempFile.setTempFileCreationStrategy(new TempFile.DefaultTempFileCreationStrategy(dir)); 

में सक्षम इस Apache POI TempFile helper class

से प्रेरित है नहीं हैं
संबंधित मुद्दे