सवाल जावा में एक स्ट्रिंग के लिए पूरी पाठ फ़ाइल


क्या जावा में टेक्स्ट फ़ाइल को पढ़ने के लिए एक पंक्ति निर्देश है, जैसे सी # में क्या है?

मेरा मतलब है, क्या जावा में इसके बराबर कुछ है ?:

String data = System.IO.File.ReadAllText("path to file");

यदि नहीं ... यह करने के लिए 'इष्टतम तरीका' क्या है ...?

संपादित करें:
मैं जावा मानक पुस्तकालयों के भीतर एक रास्ता पसंद करता हूं ... मैं तीसरे पक्ष के पुस्तकालयों का उपयोग नहीं कर सकता ..


44
2017-10-03 12:25


मूल


मैंने पाया कि यह पोस्ट मेरे लिए उपयोगी है। stackoverflow.com/questions/7463414/...


जवाब:


AFAIK, मानक पुस्तकालयों के साथ कोई भी लाइनर नहीं है। मानक पुस्तकालयों के साथ विशिष्ट दृष्टिकोण इस तरह कुछ होगा:

public static String readStream(InputStream is) {
    StringBuilder sb = new StringBuilder(512);
    try {
        Reader r = new InputStreamReader(is, "UTF-8");
        int c = 0;
        while ((c = r.read()) != -1) {
            sb.append((char) c);
        }
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    return sb.toString();
}

टिप्पणियाँ:

  • के लिए फ़ाइल से पाठ पढ़ें, FileInputStream का उपयोग करें
  • यदि प्रदर्शन महत्वपूर्ण है और आप बड़ी फाइलें पढ़ रहे हैं, तो BufferedInputStream में स्ट्रीम को लपेटने की सलाह दी जाएगी
  • धारा कॉलर द्वारा बंद किया जाना चाहिए

18
2017-10-03 12:30



buffered पाठक की एक पठन रेखा है जो एक समय में एक char पढ़ने से बेहतर होगा - Steven
यदि आप BufferedInputStream का उपयोग करेंगे, तो इससे कोई फर्क नहीं पड़ता - Neeme Praks
इस तरह यह स्ट्रिंग में अंतिम (-1) जोड़ता है। - Alec
नहीं, यह नहीं करता है। यह स्थिति के दौरान इसकी जांच करता है (सी! = -1) - Neeme Praks
यह वास्तव में अच्छा नहीं है। लूप के आस-पास लापरवाही कोडिंग की वजह से रिटर्न स्ट्रिंग हमेशा -1 के साथ समाप्त होती है। - Miles Chen


अपाचे कॉमन्स-io है:

String str = FileUtils.readFileToString(file, "utf-8");

लेकिन मानक जावा कक्षाओं में ऐसी कोई उपयोगिता नहीं है। यदि आप (किसी कारण से) बाहरी पुस्तकालयों को नहीं चाहते हैं, तो आपको इसे फिर से लागू करना होगा। यहाँ कुछ उदाहरण हैं, और वैकल्पिक रूप से, आप देख सकते हैं कि इसे कॉमन्स-आईओ या गुवा द्वारा कैसे कार्यान्वित किया जाता है।


42
2017-10-03 12:26



मैं इसका इस्तेमाल करूंगा FileUtils.readFileToString(file,encoding) संस्करण - अच्छी आदतें भी सिफारिश कर सकते हैं! - Nick
@ निक - सुझाव के लिए धन्यवाद - Bozho


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

String data = Files.asCharSource(new File("path.txt"), Charsets.UTF_8).read();

या लाइनों को पढ़ने के लिए:

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

बेशक मुझे यकीन है कि अन्य तृतीय पक्ष पुस्तकालय भी हैं जो इसे समान रूप से आसान बना देंगे - मैं सिर्फ गुवा से सबसे परिचित हूं।


21
2017-10-31 21:43





जावा 7 इस माफी राज्य के मामलों में सुधार करता है Files कक्षा (गुवा के साथ भ्रमित नहीं होना चाहिए एक ही नाम की कक्षा), आप फाइल से सभी लाइनें प्राप्त कर सकते हैं - बाहरी पुस्तकालयों के बिना - साथ:

List<String> fileLines = Files.readAllLines(path, StandardCharsets.UTF_8);

या एक स्ट्रिंग में:

String contents = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
// or equivalently:
StandardCharsets.UTF_8.decode(ByteBuffer.wrap(Files.readAllBytes(path)));

यदि आपको स्वच्छ जेडीके के साथ बॉक्स से बाहर कुछ चाहिए तो यह बहुत अच्छा काम करता है। उसने कहा, आप जावा के बिना जावा क्यों लिख रहे हैं?


20
2018-05-04 11:07





में जावा 8 (कोई बाहरी पुस्तकालय) आप धाराओं का उपयोग कर सकते हैं। यह कोड एक फ़ाइल पढ़ता है और सभी लाइनों को स्ट्रिंग में ',' से अलग करता है।

try (Stream<String> lines = Files.lines(myPath)) {
    list = lines.collect(Collectors.joining(", "));
} catch (IOException e) {
    LOGGER.error("Failed to load file.", e);
}

9
2017-12-30 08:44





Path path = FileSystems.getDefault().getPath(directory, filename);
String fileContent = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);

3
2018-01-07 13:31



ध्यान दें String(byte[], String) फेंकता है UnsupportedEncodingException। आपको पसंद करना चाहिए String(byte[], Charset) में स्थिरांक के साथ कन्स्ट्रक्टर StandardCharsets या अमरूद Charsets। - dimo414


  String fileContent="";
  try {
          File f = new File("path2file");
          FileInputStream inp = new FileInputStream(f);
          byte[] bf = new byte[(int)f.length()];
          inp.read(bf);
          fileContent = new String(bf, "UTF-8");
      } catch (FileNotFoundException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      }

1
2018-03-10 12:02