क्या जावास्क्रिप्ट का उपयोग करके किसी फ़ाइल को पढ़ने और लिखने के लिए कोई नमूना कोड दे सकता है?
क्या जावास्क्रिप्ट का उपयोग करके किसी फ़ाइल को पढ़ने और लिखने के लिए कोई नमूना कोड दे सकता है?
जवाबों:
पूर्णता के लिए, ओपी यह नहीं बताता है कि वह ऐसा ब्राउज़र में करना चाहता है (यदि वह है, जैसा कि कहा गया है, यह आमतौर पर संभव है)
हालाँकि, प्रति से जावास्क्रिप्ट यह अनुमति देता है; यह सर्वर साइड जावास्क्रिप्ट के साथ किया जा सकता है।
इस फ़ाइल को जावास्क्रिप्ट फ़ाइल वर्ग पर देखें
संपादित करें : यह लिंक सन डॉक्स के लिए था जो अब ओरेकल द्वारा स्थानांतरित कर दिया गया है।
फाइलसिस्टम वर्ग के लिए यहाँ नोड्स। Js प्रलेखन के साथ समय रखने के लिए: http://nodejs.org/docs/latest/api/fs.html
संपादित करें (2) : आप HTML5 के साथ अब क्लाइंट फाइल को पढ़ सकते हैं: http://www.html5rocks.com/en/tutorials/file/dndfiles/
ब्राउज़र-साइड जावास्क्रिप्ट को क्लाइंट मशीन पर लिखने की अनुमति नहीं है, जिसमें बहुत सारे सुरक्षा विकल्प अक्षम हैं
This answer is not useful
।
भविष्य यहाँ है! प्रस्ताव पूर्ण होने के करीब हैं, कोई और अधिक ActiveX या फ़्लैश या जावा नहीं है। अब हम उपयोग कर सकते हैं:
आप ब्राउज़र में फ़ाइल, या एक सरल अपलोड नियंत्रण पाने के लिए ड्रैग / ड्रॉप का उपयोग कर सकते हैं। एक बार उपयोगकर्ता द्वारा किसी फ़ाइल का चयन करने के बाद, आप इसे w / जावास्क्रिप्ट पढ़ सकते हैं: http://www.html5rocks.com/en/tutorials/file/dndfiles/
यहाँ मोज़िला प्रस्ताव है
http://www-archive.mozilla.org/js/js-file-object.html
यह स्पिडरमोनकी में एक संकलन स्विच के साथ लागू किया जाता है, और एडोब के एक्सटेंडस्क्रिप्ट में भी। इसके अतिरिक्त (मुझे लगता है) आपको फ़ायरफ़ॉक्स एक्सटेंशन में फ़ाइल ऑब्जेक्ट मिलता है।
rhino में एक (बल्कि असभ्य) readFile फ़ंक्शन https://developer.mozilla.org/en/Rhh_Rhell है
राइनो में अधिक जटिल फ़ाइल संचालन के लिए, आप java.io.File विधियों का उपयोग कर सकते हैं।
हालांकि आपको ब्राउज़र में यह सामान नहीं मिलेगा। किसी ब्राउज़र में समान कार्यक्षमता के लिए आप HTML5, क्लाइंटसाइड दृढ़ता, कुकीज़ और फ्लैश स्टोरेज ऑब्जेक्ट से SQL डेटाबेस फ़ंक्शन का उपयोग कर सकते हैं।
यह जावास्क्रिप्ट फ़ंक्शन ब्राउज़र के माध्यम से इसे चलाने वाले उपयोगकर्ता के लिए एक पूर्ण "सेव एज़" डायलॉग बॉक्स प्रस्तुत करता है। उपयोगकर्ता ठीक दबाता है और फ़ाइल सहेज ली जाती है।
संपादित करें: निम्नलिखित कोड केवल IE ब्राउज़र के साथ काम करता है क्योंकि फ़ायरफ़ॉक्स और क्रोम ने इस कोड को एक सुरक्षा समस्या माना है और इसे काम करने से रोक दिया है।
// content is the data you'll write to file<br/>
// filename is the filename<br/>
// what I did is use iFrame as a buffer, fill it up with text
function save_content_to_file(content, filename)
{
var dlg = false;
with(document){
ir=createElement('iframe');
ir.id='ifr';
ir.location='about.blank';
ir.style.display='none';
body.appendChild(ir);
with(getElementById('ifr').contentWindow.document){
open("text/plain", "replace");
charset = "utf-8";
write(content);
close();
document.charset = "utf-8";
dlg = execCommand('SaveAs', false, filename+'.txt');
}
body.removeChild(ir);
}
return dlg;
}
समारोह को आमंत्रित करें:
save_content_to_file("Hello", "C:\\test");
यदि आप WSH (ब्राउज़र में नहीं है!) का उपयोग करके स्थानीय स्क्रिप्टिंग करने के लिए JScript (Microsoft का जावास्क्रिप्ट) का उपयोग कर रहे हैं, तो आप Scripting.FileSystemObject
फ़ाइल सिस्टम तक पहुँचने के लिए उपयोग कर सकते हैं ।
मुझे लगता है कि यदि आप बहुत सारी सुरक्षा सेटिंग्स बंद कर देते हैं, तो आप IE में उसी ऑब्जेक्ट को एक्सेस कर सकते हैं, लेकिन यह बहुत ही बुरा विचार होगा।
hta
आवेदन में यह करना चाहता था और वह इसे हल करता है
वर्तमान में, फ़ाइलों को फ़ाइल , फ़ाइलराइटर और फ़ाइलसिस्टम एपीआई के साथ एक ब्राउज़र टैब / विंडो के संदर्भ से लिखा और पढ़ा जा सकता है , हालांकि उनके उपयोग के लिए चेतावनी हैं (इस उत्तर की पूंछ देखें)।
लेकिन आपके सवाल का जवाब देने के लिए:
BakedGoods * का उपयोग करना
फ़ाइल लिखें:
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
फ़ाइल पढ़ें:
bakedGoods.get({
data: ["testFile"],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(resultDataObj, byStorageTypeErrorObj){}
});
कच्चे फ़ाइल, FileWriter और FileSystem API का उपयोग करना
फ़ाइल लिखें:
function onQuotaRequestSuccess(grantedQuota)
{
function saveFile(directoryEntry)
{
function createFileWriter(fileEntry)
{
function write(fileWriter)
{
var dataBlob = new Blob(["Hello world!"], {type: "text/plain"});
fileWriter.write(dataBlob);
}
fileEntry.createWriter(write);
}
directoryEntry.getFile(
"testFile",
{create: true, exclusive: true},
createFileWriter
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, saveFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
फ़ाइल पढ़ें:
function onQuotaRequestSuccess(grantedQuota)
{
function getfile(directoryEntry)
{
function readFile(fileEntry)
{
function read(file)
{
var fileReader = new FileReader();
fileReader.onload = function(){var fileData = fileReader.result};
fileReader.readAsText(file);
}
fileEntry.file(read);
}
directoryEntry.getFile(
"testFile",
{create: false},
readFile
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, getFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
बस आपने क्या हक मांगा? शायद शायद नहीं। एपीआई के बाद के दो:
इसके अतिरिक्त, फ़ाइलसिस्टम कल्पना यह निर्धारित नहीं करती है कि डिस्क पर निर्देशिका संरचनाएँ कैसे दिखती हैं। उदाहरण के लिए क्रोमियम-आधारित ब्राउज़रों में, सैंडबॉक्स में एक वर्चुअल फ़ाइल सिस्टम (एक निर्देशिका संरचना होती है जो आवश्यक रूप से डिस्क पर उसी रूप में मौजूद नहीं होती है जो ब्राउज़र के भीतर से एक्सेस करते समय होती है), जिसके भीतर निर्देशिका और फाइलें एपीआई रखे जाते हैं।
इसलिए यद्यपि आप एपीआई के साथ एक प्रणाली के लिए फाइल लिखने में सक्षम हो सकते हैं, एपीआई के बिना फ़ाइलों का पता लगाने (अच्छी तरह से, फाइलसिस्टम एपीआई के बिना) एक गैर-तुच्छ मामला हो सकता है।
यदि आप इन मुद्दों / सीमाओं से निपट सकते हैं, तो ये API आपके द्वारा पूछे गए कार्यों को करने का एकमात्र मूल तरीका है।
यदि आप गैर-देशी समाधानों के लिए खुले हैं, तो सिल्वरलाइट भी आइसोलेटेडस्टोरेज के माध्यम से टैब / विंडो प्रतियोगिता से फ़ाइल i / o की अनुमति देता है । हालाँकि, इस सुविधा का उपयोग करने के लिए प्रबंधित कोड आवश्यक है; एक समाधान जिसके लिए इस तरह के कोड को लिखना आवश्यक है, इस प्रश्न के दायरे से परे है।
बेशक, एक समाधान जो पूरक प्रबंधित कोड का उपयोग करता है, केवल एक जावास्क्रिप्ट को लिखने के लिए छोड़कर, इस प्रश्न के दायरे में अच्छी तरह से है;):
//Write file to first of either FileSystem or IsolatedStorage
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem", "silverlight"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
* बेक्डगूड एक जावास्क्रिप्ट पुस्तकालय है जो एक समान इंटरफ़ेस स्थापित करता है जिसका उपयोग सभी देशी और कुछ गैर-देशी भंडारण सुविधाओं में आम भंडारण संचालन करने के लिए किया जा सकता है। यह इस आदमी द्वारा यहीं बनाए रखा गया है:)।
फ़ायरफ़ॉक्स के लिए:
var file = Components.classes["@mozilla.org/file/local;1"].
createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("/home");
Https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O देखें
दूसरों के लिए, TiddlyWiki ऐप देखें कि यह कैसे करता है।
ब्राउज़र के संदर्भ में, जावास्क्रिप्ट उपयोगकर्ता-निर्दिष्ट फ़ाइल को पढ़ सकता है। फ़ाइल एपीआई का उपयोग करके फ़ाइल पढ़ने के बारे में विस्तार से एरिक बिडेलमैन का ब्लॉग देखें । हालांकि, कुछ सुरक्षा सेटिंग्स को अक्षम किए बिना ब्राउज़र-आधारित जावास्क्रिप्ट के लिए स्थानीय कंप्यूटर की फ़ाइल प्रणाली को गलत करना संभव नहीं है, क्योंकि यह किसी भी वेबसाइट के लिए आपके स्थानीय फ़ाइल सिस्टम को मनमाने ढंग से बदलने के लिए सुरक्षा के खतरे के रूप में माना जाता है।
यह कहते हुए कि, जो आप करना चाह रहे हैं उसके आधार पर इसके आसपास काम करने के कुछ तरीके हैं:
यदि यह आपकी अपनी साइट है, तो आप वेब पेज में जावा एप्लेट को एम्बेड कर सकते हैं। हालांकि, आगंतुक को स्थानीय मशीन पर जावा स्थापित करना होगा और सुरक्षा जोखिम के बारे में सतर्क किया जाएगा। आगंतुक को एप्लेट को लोड करने की अनुमति देनी होगी। जावा एप्लेट एक निष्पादन योग्य सॉफ्टवेयर की तरह है जिसकी स्थानीय कंप्यूटर तक पूरी पहुंच है।
Chrome एक फ़ाइल सिस्टम का समर्थन करता है जो स्थानीय फ़ाइल सिस्टम का सैंडबॉक्स वाला भाग है। देखें यह पेज जानकारी के लिए। यह संभवतः आपके लिए स्थानीय रूप से चीजों को अस्थायी रूप से सहेजने के लिए प्रदान करता है। हालाँकि, यह अन्य ब्राउज़रों द्वारा समर्थित नहीं है।
यदि आप ब्राउज़र तक सीमित नहीं हैं, तो Node.js के पास एक पूर्ण फ़ाइल सिस्टम इंटरफ़ेस है। इसकी फाइल सिस्टम प्रलेखन के लिए यहां देखें । ध्यान दें कि Node.js न केवल सर्वर पर, बल्कि विंडोज़ सहित किसी भी क्लाइंट कंप्यूटर पर चल सकता है। जावास्क्रिप्ट परीक्षण धावक कर्म Node.js. पर आधारित है यदि आप स्थानीय कंप्यूटर पर जावास्क्रिप्ट में प्रोग्राम करना पसंद करते हैं, तो यह एक विकल्प है।
फ़ाइल प्रयास बनाने के लिए
function makefile(){
var fso;
var thefile;
fso = new ActiveXObject("Scripting.FileSystemObject");
thefile=fso.CreateTextFile("C:\\tmp\\MyFile.txt",true);
thefile.close()
}
C ड्राइव में अपनी निर्देशिका बनाएँ क्योंकि विंडोज़ में वेब से लिखने के खिलाफ सुरक्षा है उदा C ड्राइव में "tmp" नाम का फ़ोल्डर बनाएँ।
आपको फ़्लैश, जावा या सिल्वरलाइट की ओर मुड़ना होगा। सिल्वरलाइट के मामले में, आप पृथक संग्रहण को देख रहे हैं । यह आपको उपयोगकर्ताओं के डिस्क पर अपने स्वयं के खेल के मैदान में फ़ाइलों को लिखने के लिए मिलेगा। हालांकि यह आपको अपने खेल के मैदान के बाहर लिखने नहीं देगा।
आप इसे किसी भी क्रॉस-ब्राउज़र तरीके से नहीं कर सकते। IE में फ़ाइलों को पढ़ने / लिखने के लिए ActiveX ऑब्जेक्ट का उपयोग करने के लिए "विश्वसनीय" अनुप्रयोगों को सक्षम करने के तरीके हैं, लेकिन यह दुर्भाग्य से है।
यदि आप उपयोगकर्ता जानकारी को सहेजना चाह रहे हैं, तो आपको कुकीज़ का उपयोग करने की सबसे अधिक आवश्यकता होगी।
एक ReactJS परीक्षण से, निम्नलिखित कोड सफलतापूर्वक एक फ़ाइल लिखता है:
import writeJsonFile from 'write-json-file';
const ans = 42;
writeJsonFile('answer.txt', ans);
const json = {"answer": ans};
writeJsonFile('answer_json.txt', json);
फ़ाइल को परीक्षण युक्त निर्देशिका को लिखा जाता है, इसलिए एक वास्तविक JSON फ़ाइल '* .json' पर लिखना एक लूप बनाता है!
आप जावास्क्रिप्ट के माध्यम से क्लाइंट साइड पर फ़ाइल i / o नहीं कर सकते क्योंकि यह एक सुरक्षा जोखिम होगा। आपको या तो उन्हें डाउनलोड करने और एक exe चलाने के लिए प्राप्त करना होगा, या यदि फ़ाइल आपके सर्वर पर है, AJAX और सर्वर साइड भाषा जैसे PHP का उपयोग सर्वर पर i / o करने के लिए करें
जावास्क्रिप्ट का उपयोग करके फ़ाइल को पढ़ने और लिखने के दो तरीके हैं
जावास्क्रिप्ट एक्सटेंशन का उपयोग करना
एक वेब पेज और एक्टिव एक्स ऑब्जेक्ट्स का उपयोग करना
यहाँ क्रोम v52 के लिए समाधान लिखा है + (उपयोगकर्ता को अभी भी एक गंतव्य doe का चयन करने की आवश्यकता है ...)
स्रोत: StreamSaver.js
<!-- load StreamSaver.js before streams polyfill to detect support -->
<script src="StreamSaver.js"></script>
<script src="https://wzrd.in/standalone/web-streams-polyfill@latest"></script>
const writeStream = streamSaver.createWriteStream('filename.txt')
const encoder = new TextEncoder
let data = 'a'.repeat(1024)
let uint8array = encoder.encode(data + "\n\n")
writeStream.write(uint8array) // must be uInt8array
writeStream.close()
क्लाइंट पक्ष पर उत्पन्न बड़े डेटा को लिखने के लिए सबसे उपयुक्त।
अन्यथा मैं Blob / Files को बचाने के लिए FileSaver.js का उपयोग करने का सुझाव देता हूं