दिलचस्प पोस्ट
WCF: ज्ञात प्रकार को कॉन्फ़िगर करना Google Apps स्क्रिप्ट में अधिकतम निष्पादन समय बढ़ गया Xcode 6 में ऑटोलायआउट बाधाओं का उपयोग करते हुए पहलू-फिट व्यवहार का अनुकरण करना मैं कितना गुणा और विभाजित कर सकता हूँ केवल बिट स्थानांतरण और जोड़ने का उपयोग कर? सी # कॉरपोरेट रिटर्न टाइपिंग जेनेरिक का इस्तेमाल करते हैं सी ++ में टेल रिकर्सन कैसे एक विधि निर्धारित समय पर परिभाषित किया जाता है? उबंटु में स्टार्टअप पर पायथन स्क्रिप्ट चलाएं एक <a> लिंक पर क्लिक करते समय पुष्टिकरण संवाद कैसे प्रदर्शित किया जाए? कैसे ASP.NET MVC में मान्यकरण का विस्तार करने के लिए HTML सहायक? जावा में प्रत्येक लूप के लिए आदिम सरणी नए के साथ कैसे काम करता है? पायथन 3 में execfile के लिए एक विकल्प क्या है? Codeigniter: देखने के नियंत्रक से डेटा पासिंग समवर्ती HashSet <T> में .NET फ्रेमवर्क? PHP में कई कंस्ट्रक्टर बनाने का सर्वोत्तम तरीका

संसाधन टेक्स्ट फ़ाइल को स्ट्रिंग (जावा) में पढ़ने का उपयोग

क्या कोई ऐसी सुविधा है जो संसाधन में पाठ फ़ाइल को स्ट्रिंग में पढ़ने में मदद करती है। मुझे लगता है कि यह एक लोकप्रिय आवश्यकता है, लेकिन मुझे Googling के बाद कोई भी उपयोग नहीं मिल सका।

Solutions Collecting From Web of "संसाधन टेक्स्ट फ़ाइल को स्ट्रिंग (जावा) में पढ़ने का उपयोग"

हां, अमरूद में Resources वर्ग में यह अमरूद प्रदान करता है। उदाहरण के लिए:

 URL url = Resources.getResource("foo.txt"); String text = Resources.toString(url, Charsets.UTF_8); 

आप पुराने बेवकूफ स्कैनर चाल का उपयोग कर सकते हैं जो कि अमरूद की तरह किसी अतिरिक्त निर्भरता के बिना करते हैं:

 String text = new Scanner(AppropriateClass.class.getResourceAsStream("foo.txt"), "UTF-8").useDelimiter("\\A").next(); 

दोस्तों, जब तक आपको वास्तव में इसकी ज़रूरत नहीं होती तब तक 3 पार्टी सामान का उपयोग न करें। पहले से ही जेडीके में काफी कार्यक्षमता है

गवावा में एक स्ट्रिंग में एक फ़ाइल को पढ़ने के लिए "toString" विधि है:

 import com.google.common.base.Charsets; import com.google.common.io.Files; String content = Files.toString(new File("/home/x1/text.log"), Charsets.UTF_8); 

इस पद्धति को फ़ाइल को क्लासपाथ में रखने की आवश्यकता नहीं है (जैसा कि जॉन स्कीट के पिछले उत्तर में है)।

जावा 7 के लिए:

 new String(Files.readAllBytes(Paths.get(getClass().getResource("foo.txt").toURI()))); 

अपाचे-कॉमन्स-आईओ में एक उपयोगिता नाम FileUtils :

 URL url = Resources.getResource("myFile.txt"); File myFile = new File(url.toURI()); String content = FileUtils.readFileToString(myFile, "UTF-8"); // or any other encoding 

yegor256 को अपाचे कॉमन्स का उपयोग कर एक अच्छा समाधान मिला IO :

 import org.apache.commons.io.IOUtils; String text = IOUtils.toString(this.getClass().getResourceAsStream("foo.xml"), "UTF-8"); 

मुझे अक्सर इस समस्या को स्वयं था छोटी परियोजनाओं पर निर्भरता से बचने के लिए, मैं अक्सर एक छोटे उपयोगिता फ़ंक्शन लिखता हूं जब मुझे कॉमन्स आईओ या इस तरह की आवश्यकता नहीं होती है स्ट्रिंग बफ़र में फ़ाइल की सामग्री को लोड करने के लिए यहां कोड दिया गया है:

 StringBuffer sb = new StringBuffer(); BufferedReader br = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("path/to/textfile.txt"), "UTF-8")); for (int c = br.read(); c != -1; c = br.read()) sb.append((char)c); System.out.println(sb.toString()); 

उस स्थिति में एन्कोडिंग निर्दिष्ट करना ज़रूरी है, क्योंकि आपने अपनी फ़ाइल को यूटीएफ -8 में संपादित किया है, और उसे एक जार में डाल दिया हो सकता है और फाइल खोलने वाले कंप्यूटर में इसकी मूल फ़ाइल एन्कोडिंग (उदाहरण के लिए) के रूप में सीपी -1251 हो सकता है ; इसलिए इस मामले में आप लक्ष्य एन्कोडिंग को कभी नहीं जानते, इसलिए स्पष्ट एन्कोडिंग जानकारी महत्वपूर्ण है। चारों ओर से फ़ाइल char को पढ़ने के लिए पाश भी अक्षम है, लेकिन इसका उपयोग बफ़रेड रीडर पर किया जाता है, और इसलिए वास्तव में बहुत तेज़ है

आप निम्न कोड फॉर्म जावा का उपयोग कर सकते हैं

  new String(Files.readAllBytes(Paths.get(getClass().getResource("example.txt").toURI()))); 

शुद्ध और सरल जावा 8 समाधान

यदि आप जावा 8 का उपयोग कर रहे हैं तो यह सरल तरीका नीचे ठीक होगा:

 /** * Reads given resource file as a string. * * @param resourceFileName the path to the resource file * @return the file's contents */ public String getResourceFileAsString(String resourceFileName) { InputStream is = getClass().getClassLoader().getResourceAsStream(resourceFileName); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); return reader.lines().collect(Collectors.joining("\n")); } 

और यह जार फ़ाइलों में संसाधनों के साथ काम करता है।

बड़ी, वसा पुस्तकालयों के लिए कोई ज़रूरत नहीं है जब तक आप पहले से ही गवावा या अपाचे कॉमन्स आईओ का उपयोग नहीं कर रहे हैं, आपकी परियोजना में उन पुस्तकालयों को जोड़ने के लिए सिर्फ एक स्ट्रिंग के रूप में फाइल पढ़ने में सक्षम होना थोड़ा सा लगता है

अपाचे कॉमन्स के FileUtils का उपयोग करें इसमें एक विधि पढ़ी है FileToString

यदि आप अपनी परियोजना में src / main / resources में testcase / foo.json जैसे प्रोजेक्ट संसाधन से अपना स्ट्रिंग प्राप्त करना चाहते हैं, तो ऐसा करें:

 String myString= new String(Files.readAllBytes(Paths.get(getClass().getClassLoader().getResource("testcase/foo.json").toURI()))); 

ध्यान दें कि getClassLoader () विधि कुछ अन्य उदाहरणों पर अनुपलब्ध है।

यहाँ मेरा दृष्टिकोण ठीक काम किया है

 public String getFileContent(String fileName) { String filePath = "myFolder/" + fileName+ ".json"; try(InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath)) { return IOUtils.toString(stream, "UTF-8"); } catch (IOException e) { // Please print your Exception } } 

मैं classpath से संसाधन फ़ाइलों को पढ़ने के लिए निम्न का उपयोग कर रहा हूं:

 import java.io.IOException; import java.io.InputStream; import java.net.URISyntaxException; import java.util.Scanner; public class ResourceUtilities { public static String resourceToString(String filePath) throws IOException, URISyntaxException { try (InputStream inputStream = ResourceUtilities.class.getClassLoader().getResourceAsStream(filePath)) { return inputStreamToString(inputStream); } } private static String inputStreamToString(InputStream inputStream) { try (Scanner scanner = new Scanner(inputStream).useDelimiter("\\A")) { return scanner.hasNext() ? scanner.next() : ""; } } } 

कोई तीसरी पार्टी निर्भरता आवश्यक नहीं है।

अमरूद में भी Files.readLines() अगर आपको List<String> लाइन-बाय-लाइन के रूप में वापसी मान चाहिए:

 List<String> lines = Files.readLines(new File("/file/path/input.txt"), Charsets.UTF_8); 

कृपया एक पाठ फ़ाइल से String प्राप्त करने के लिए यहां 3 तरीके ( BufferedReader बनाम पेरू की Files बनाम गवावा के Resources ) की तुलना करें।

स्थैतिक आयात के सेट के साथ, अमरूद एक बहुत ही कॉम्पैक्ट एक-लाइनर हो सकता है:

 toString(getResource("foo.txt"), UTF_8); 

निम्नलिखित आयात की आवश्यकता है:

 import static com.google.common.io.Resources.getResource import static com.google.common.io.Resources.toString import static java.nio.charset.StandardCharsets.UTF_8 
 public static byte[] readResoureStream(String resourcePath) throws IOException { ByteArrayOutputStream byteArray = new ByteArrayOutputStream(); InputStream in = CreateBffFile.class.getResourceAsStream(resourcePath); //Create buffer byte[] buffer = new byte[4096]; for (;;) { int nread = in.read(buffer); if (nread <= 0) { break; } byteArray.write(buffer, 0, nread); } return byteArray.toByteArray(); } Charset charset = StandardCharsets.UTF_8; String content = new String(FileReader.readResoureStream("/resource/...*.txt"), charset); String lines[] = content.split("\\n");