एक रिसोर्स एक ऑब्जेक्ट है जो AutoCloseable इंटरफ़ेस को इम्प्लीमेंट करता है। जब भी आप अपने प्रोग्राम में रिसोर्स का उपयोग करते हैं, तो उपयोग के बाद इसे बंद करने की सिफारिश की जाती है।
प्रारंभ में, यह कार्य finally ब्लॉक का उपयोग करके किया जाता था।
उदाहरण
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class FinalExample {
public static void main(String[] args) throws IOException {
File file = null;
FileInputStream inputStream = null;
try {
file = new File("D:\\source\\sample.txt");
inputStream = new FileInputStream(file);
Scanner sc = new Scanner(inputStream);
while (sc.hasNextLine()) {
System.out.println(sc.nextLine());
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
inputStream.close();
}
}
}
आउटपुट
This is a sample file with sample text
ARM
Java में ARM का अर्थ है ऑटोमैटिक रिसोर्स मैनेजमेंट, इसे Java 7 में पेश किया गया था, इसमें रिसोर्सेज को try ब्लॉक में डिक्लेयर किया जाता है और ब्लॉक के अंत में वे ऑटोमैटिकली बंद हो जाते हैं। इसे try-with-resources ब्लॉक के रूप में भी जाना जाता है और इस में डिक्लेयर किए गए ऑब्जेक्ट्स रिसोर्स होने चाहिए यानी वे AutoCloseable टाइप के होने चाहिए।
try-with-resources स्टेटमेंट का सिंटैक्स निम्नलिखित है:
try(ClassName obj = new ClassName()) {
// कोड...
}
JSE 7 से try-with-resources स्टेटमेंट पेश किया गया है। इसमें हम try ब्लॉक में एक या अधिक रिसोर्स डिक्लेयर करते हैं और ये उपयोग के बाद ऑटोमैटिकली बंद हो जाते हैं (try ब्लॉक के अंत में)।
try ब्लॉक में डिक्लेयर किए गए रिसोर्सेज को java.lang.AutoCloseable क्लास को एक्सटेंड करना चाहिए।
उदाहरण
निम्नलिखित प्रोग्राम Java में try-with-resources को दर्शाता है।
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class FinalExample {
public static void main(String[] args) throws IOException {
try (FileInputStream inputStream = new FileInputStream(new File("D:\\source\\sample.txt"));) {
Scanner sc = new Scanner(inputStream);
while (sc.hasNextLine()) {
System.out.println(sc.nextLine());
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
आउटपुट
This is a sample file with sample text
Java में मल्टीपल रिसोर्सेज
आप try-with-resources में मल्टीपल रिसोर्सेज भी डिक्लेयर कर सकते हैं और वे सभी ब्लॉक के अंत में एक साथ बंद हो जाएंगे।
उदाहरण
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopying {
public static void main(String[] args) {
try (FileInputStream inS = new FileInputStream(new File("E:\\Test\\sample.txt"));
FileOutputStream outS = new FileOutputStream(new File("E:\\Test\\duplicate.txt"))) {
byte[] buffer = new byte[1024];
int length;
while ((length = inS.read(buffer)) > 0) {
outS.write(buffer, 0, length);
}
System.out.println("File copied successfully!!");
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
आउटपुट
File copied successfully!!