2013-04-17 15 views
7

Yerel makinemdeki bir metin dosyasına içerik yazmak için bir prosedür oluşturdum.javascript ile yerel bir metin dosyasına veri yazma

<form id="addnew"> 
    <input type="text" class="id"> 
    <input type="text" class="content"> 
    <input type="submit" value="Add"> 
</form> 
<script> 
    jQuery(function($) { 
     $('#form_addjts').submit(function(){ 
      writeToFile({ 
       id: $(this).find('.id').val(), 
       content: $(this).find('.content').val() 
      }); 
      return false; 
     }); 
     function writeToFile(data){ 
      var fso = new ActiveXObject("Scripting.FileSystemObject"); 
      var fh = fso.OpenTextFile("D:\\data.txt", 8); 
      fh.WriteLine(data.id + ',' + data.content); 
      fh.Close(); 
     } 
    }); 
</script> 

Bu işlem düzgün çalışıyor ve yeni verilerimi dosyaya ekleyebiliyor.

Ancak, geçirdiğim kimlik temelinde belirli bir satır İÇERİĞİ'ni güncelleştirmek istiyorum.
Çok arandım, ancak bulamadım.

Dosyadaki belirli bir satırı, kimliği temel alarak nasıl güncelleştirebilirsiniz?

Not: - Böyle bir sunucu kullanmıyorum. Yerel makinemin kendisinde çalışacağım bir html dosyası (tüm işlevselliği içerir) var.

+1

html'yi paylaşabilirsiniz –

+0

Söz konusu HTML kodunu ekleyin. Yorumda değil. – arulmr

+0

Neden bu txt'de JSON ile çalışmıyorsunuz? Ardından, içerikleri ayrıştırmak için JSON.parse() 'ı ve güncelleştirmeden önce ID/row/whatever komutunu kontrol eden bir JS yapabilir ve txt' e geri yazmak için JSON.stringify() öğesini kullanabilirsiniz. – RaphaelDDL

cevap

10

Bizim HTML: Belirli bir satır kontrol

function writeToFile(d1, d2){ 
    var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    var fh = fso.OpenTextFile("data.txt", 8, false, 0); 
    fh.WriteLine(d1 + ',' + d2); 
    fh.Close(); 
} 
var submit = document.getElementById("submit"); 
submit.onclick = function() { 
    var id  = document.getElementById("id").value; 
    var content = document.getElementById("content").value; 
    writeToFile(id, content); 
} 

:

<div id="addnew"> 
    <input type="text" id="id"> 
    <input type="text" id="content"> 
    <input type="button" value="Add" id="submit"> 
</div> 

<div id="check"> 
    <input type="text" id="input"> 
    <input type="button" value="Search" id="search"> 
</div> 

(txt dosyasına yazma) JS

function readFile(){ 
    var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    var fh = fso.OpenTextFile("data.txt", 1, false, 0); 
    var lines = ""; 
    while (!fh.AtEndOfStream) { 
     lines += fh.ReadLine() + "\r"; 
    } 
    fh.Close(); 
    return lines; 
} 
var search = document.getElementById("search"); 
search.onclick = function() { 
    var input = document.getElementById("input").value; 
    if (input != "") { 
     var text = readFile(); 
     var lines = text.split("\r"); 
     lines.pop(); 
     var result; 
     for (var i = 0; i < lines.length; i++) { 
      if (lines[i].match(new RegExp(input))) { 
       result = "Found: " + lines[i].split(",")[1]; 
      } 
     } 
     if (result) { alert(result); } 
     else { alert(input + " not found!"); } 
    } 
} 

bir .hta dosya ve kaçak içindeki bu koy o. W7, IE11'de test edildi. İşe yarıyor. Ayrıca neler olduğunu açıklamamı istiyorsan, söyle.

+4

Yalnızca IE –

+1

@Everyone_Else'de çalışır. Bu sürpriz değil. OP, IE'de çalışan ActiveX kullanıyor. Ayrıca, diğer tarayıcılar yerel dosyalara erişmeye izin vermez. – akinuri

+1

Kötü bir cevap. İyi cevaplar aynı soruyu soran ve IE kullanmayanlar için faydalıdır. – CashCow