जावास्क्रिप्ट का उपयोग कैसे करें स्थानीय पाठ फ़ाइल को पढ़ने और लाइन द्वारा लाइन पढ़ने के लिए?


85

मेरे पास html + जावास्क्रिप्ट द्वारा बनाया गया एक वेब पेज है जो डेमो है, मैं जानना चाहता हूं कि स्थानीय सीएसवी फाइल कैसे पढ़ें और लाइन से लाइन पढ़ें ताकि मैं सीएसवी फाइल से डेटा निकाल सकूं।


2
इसे बाहर की जाँच करें html5rocks.com/en/tutorials/file/dndfiles
हंटर

2
क्या आपके पास कोई ब्राउज़र संगतता आवश्यकताएं हैं? विशेष रूप से ddo आप अर्थात 9 या उससे कम समर्थन करते हैं?
प्यार नहीं किया


@ हंटरलेर्को धन्यवाद, समस्या यह है कि मुझे नहीं पता कि परिणाम से प्रत्येक पंक्ति कैसे प्राप्त करें। मेरा मतलब है कि Reader.readAsText () इसके बजाय सभी डेटा लौटाता है, मैं लाइन से लाइन पढ़ सकता हूं
लिटोसेन

@LukeMcGregor कोई आवश्यकता नहीं है, बस वर्तमान संस्करणों का समर्थन ठीक होगा।
लितोसेन

जवाबों:


117

बिना jQuery के:

document.getElementById('file').onchange = function(){

  var file = this.files[0];

  var reader = new FileReader();
  reader.onload = function(progressEvent){
    // Entire file
    console.log(this.result);

    // By lines
    var lines = this.result.split('\n');
    for(var line = 0; line < lines.length; line++){
      console.log(lines[line]);
    }
  };
  reader.readAsText(file);
};

HTML:

<input type="file" name="file" id="file">

फ़ाइल फ़ील्ड प्रदान किए जाने के बाद अपना जावास्क्रिप्ट कोड डालना याद रखें।


21
मेरे पास 200000 लाइनें हैं (मजाक नहीं, यह एक लॉग फाइल है)। मुझे नहीं लगता कि आपका समाधान कवर करता है, हालांकि अच्छा प्रयास करें।
टॉम ज़ातो -

इसके अलावा, यह समाधान संभाल नहीं करता है अगर वह रिटर्न (लाइन फीड) एक उद्धृत क्षेत्र के भीतर है। टॉमस के लिए, यदि आपके पास अधिक उन्नत ब्राउज़र है, तो आप "स्प्लिट" किए बिना लाइन से लाइन पढ़ने के लिए एक जनरेटर का उपयोग कर सकते हैं।
राहुल

5
बाहरी फ़ाइल के लिए पथ कहाँ है जिसमें हम लाइनें लेते हैं?
abidinberkay

@ TomášZato खदान 100 मीटर की रेखा है। मैंने उस उत्तर का अभी तक परीक्षण नहीं किया है .. लेकिन आपने ऐसा कैसे किया? एक उदाहरण के लिए लिंक सुपर सराहना की जाएगी! उत्तर के लिए huanPastas, +1!
gsamaras

2
@gsamaras मुझे ठीक से याद नहीं है, लेकिन मैंने कुछ स्ट्रीम का उपयोग किया है जो कि टुकड़ा द्वारा डेटा टुकड़े को पढ़ता है और फिर हर बार जब मैंने सामना किया तो ईमेटेड घटना \n। लेकिन 100 मीटर लाइनों के साथ, आप उन्हें HTML में प्रदर्शित करने वाली तालिका में चलने वाले हैं।
टॉम ज़ातो -

37

ES6 के प्रयोग से जावास्क्रिप्ट थोड़ा साफ हो जाता है

handleFiles(input) {

    const file = input.target.files[0];
    const reader = new FileReader();

    reader.onload = (event) => {
        const file = event.target.result;
        const allLines = file.split(/\r\n|\n/);
        // Reading line by line
        allLines.forEach((line) => {
            console.log(line);
        });
    };

    reader.onerror = (event) => {
        alert(event.target.error.name);
    };

    reader.readAsText(file);
}

3
रेगेक्स के साथ विभाजित लाइनों के लिए मतदान किया गया जो इसे करने का सही तरीका है।
मेयसम फीघी

13
सरल \r?\n
रीगेक्सप

1
उत्कृष्ट उदाहरण है, और मुझे लगता है कि विंडोज और यूनिक्स-शैली लाइन अंत को संभाला जाता है। धन्यवाद।
ब्रैड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.