मेरे पास निम्न जावा क्लास है जो एक चीज करता है, config.properties से मान निकालती है।क्या मुझे कोशिश/पकड़/आखिरकार ब्लॉक के साथ fileInputStream.close को घेरने की आवश्यकता है? यह कैसे किया जाता है?
जब fileInputStream
को बंद करने का समय आता है, तो मुझे लगता है कि मैंने विकिपीडिया पर पढ़ा है कि यह अंततः ब्लॉक में होना अच्छा है। क्योंकि यह ईमानदारी से कोशिश/पकड़ ब्लॉक में ठीक काम करता है।
क्या आप अंत में अनुभाग में fileInputStream.close()
प्राप्त करने के लिए मुझे सुधार दिखा सकते हैं?
ConfigProperties.java पैकेज बेस;
import java.io.FileInputStream;
import java.util.Properties;
public class ConfigProperties {
public FileInputStream fileInputStream;
public String property;
public String getConfigProperties(String strProperty) {
Properties configProperties = new Properties();
try {
fileInputStream = new FileInputStream("resources/config.properties");
configProperties.load(fileInputStream);
property = configProperties.getProperty(strProperty);
System.out.println("getConfigProperties(" + strProperty + ")");
// use a finally block to close your Stream.
// If an exception occurs, do you want the application to shut down?
} catch (Exception ex) {
// TODO
System.out.println("Exception: " + ex);
}
finally {
fileInputStream.close();
}
return property;
}
}
क्या समाधान केवल ग्रहण के रूप में करने के लिए है और आखिरकार ब्लॉक में ऐसा करता है?
finally {
try {
fileInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
सभी को धन्यवाद!
FYI करें: कॉमन्स-कब एक अच्छा काम है: IOUtils.closeQuietly() जो बंद करने की कोशिश/पकड़ का ख्याल रखेगा। आपका कोड बहुत अच्छा लगेगा :) ध्यान रखें कि यह फ़ंक्शन आपको IOException का जवाब देने का मौका नहीं देता है, लेकिन आम तौर पर लोग ऐसा नहीं करते हैं और अपवाद को अनदेखा करते हैं। अगर आपको जवाब देने की ज़रूरत है, तो अपनी खुद की उपयोगिता विधि बनाएं जो एक स्टैक ट्रेस को लॉग या प्रिंट करता है या जो भी आपको करने की ज़रूरत है। – Matt