কেউ জাভাস্ক্রিপ্ট ব্যবহার করে কোনও ফাইল পড়তে এবং লিখতে কিছু নমুনা কোড দিতে পারেন?
কেউ জাভাস্ক্রিপ্ট ব্যবহার করে কোনও ফাইল পড়তে এবং লিখতে কিছু নমুনা কোড দিতে পারেন?
উত্তর:
সম্পূর্ণতার জন্য, ওপিতে বলা হয় না যে তিনি ব্রাউজারে এটি করতে দেখছেন (যদি তিনি যেমন বলেন তবে এটি সাধারণত সম্ভব নয়)
তবে প্রতি সেবার জাভাস্ক্রিপ্ট এটিকে অনুমতি দেয়; এটি সার্ভার সাইড জাভাস্ক্রিপ্ট দিয়ে করা যায়।
জাভাস্ক্রিপ্ট ফাইল ক্লাসে এই ডকুমেন্টেশনটি দেখুন
সম্পাদনা : সেই লিঙ্কটি সান ডক্সের ছিল যা এখন ওরাকল দ্বারা সরানো হয়েছিল।
সময়ের সাথে তাল মিলিয়ে রাখতে এখানে ফাইল সিস্টেম শ্রেণীর নোড.জেএস ডকুমেন্টেশন: http://nodejs.org/docs/latest/api/fs.html
সম্পাদনা (2) : আপনি এখন HTML5: http://www.html5rocks.com/en/tutorials/file/dndfiles/ এর সাথে ক্লায়েন্টের পক্ষে ক্লায়েন্টের পক্ষে পড়তে পারেন
না। ব্রাউজারের পাশের জাভাস্ক্রিপ্টে ক্লায়েন্ট মেশিনে লেখার অনুমতি নেই প্রচুর সুরক্ষা অপশন অক্ষম হওয়া
This answer is not useful
।
ভবিষ্যত এখানে! প্রস্তাবগুলি সমাপ্তির কাছাকাছি, আর অ্যাক্টিভএক্স বা ফ্ল্যাশ বা জাভা নেই। এখন আমরা ব্যবহার করতে পারি:
আপনি ব্রাউজারে ফাইল আনার জন্য ড্রাগ / ড্রপ বা সাধারণ আপলোড নিয়ন্ত্রণ ব্যবহার করতে পারেন। একবার ব্যবহারকারী কোনও ফাইল নির্বাচন করে নিলে আপনি এটি ডাব্লু / জাভাস্ক্রিপ্টটি পড়তে পারেন: http://www.html5rocks.com/en/tutorials/file/dndfiles/
মজিলা প্রস্তাব এখানে
http://www-archive.mozilla.org/js/js-file-object.html
এটি স্পাইডারমোনকিতে এবং সংক্ষেপে অ্যাডোবের প্রসারিত স্ক্রিপ্ট সহ একটি সংকলন সুইচ প্রয়োগ করা হয়। অতিরিক্তভাবে (আমার মনে হয়) আপনি ফায়ারফক্স এক্সটেনশনে ফাইল অবজেক্টটি পান।
গন্ডার একটি (বরং উদাসীন) রিডফিল ফাংশন রয়েছে https://developer.mozilla.org/en/Rhino_Shell
গন্ডার আরও জটিল ফাইল অপারেশনের জন্য, আপনি java.io.File পদ্ধতি ব্যবহার করতে পারেন।
যদিও আপনি ব্রাউজারে এই জিনিসগুলির কোনওটি পাবেন না। ব্রাউজারে অনুরূপ কার্যকারিতার জন্য আপনি এইচটিএমএল 5, ক্লায়েন্টাইড অধ্যবসায়, কুকিজ এবং ফ্ল্যাশ স্টোরেজ অবজেক্ট থেকে এসকিউএল ডাটাবেস ফাংশন ব্যবহার করতে পারেন।
এই জাভাস্ক্রিপ্ট ফাংশনটি ব্রাউজারের মাধ্যমে এই চালক ব্যবহারকারীকে একটি সম্পূর্ণ "সংরক্ষণ করুন" ডায়ালগ বক্স উপস্থাপন করে। ব্যবহারকারী ঠিক আছে টিপুন এবং ফাইল সংরক্ষণ করা হয়।
সম্পাদনা করুন: ফায়ারফক্স এবং ক্রোম এই কোডটিকে একটি সুরক্ষা সমস্যা হিসাবে বিবেচনা করেছে এবং এটিকে কাজ করা থেকে অবরুদ্ধ করেছে তাই নিম্নলিখিত কোডগুলি কেবলমাত্র আইই ব্রাউজারের সাথে কাজ করে।
// 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");
আপনি যদি ডাব্লুএসএইচ (কোনও ব্রাউজারে নেই!) ব্যবহার করে স্থানীয় স্ক্রিপ্টিং করতে JScript (মাইক্রোসফ্টের জাভাস্ক্রিপ্ট) ব্যবহার করেন তবে Scripting.FileSystemObject
আপনি ফাইল সিস্টেম অ্যাক্সেস করতে ব্যবহার করতে পারেন ।
আমি মনে করি আপনি যদি প্রচুর সুরক্ষা সেটিংস বন্ধ করে দেন তবে আপনি IE তে একই জিনিসটি অ্যাক্সেস করতে পারবেন তবে এটি একটি খুব খারাপ ধারণা।
hta
অ্যাপ্লিকেশনটিতে এটি করতে চেয়েছিলাম এবং এটি সমাধান করে
বর্তমানে, ফাইল লিখিত এবং যুক্ত একটি ব্রাউজার ট্যাব / উইন্ডো প্রেক্ষাপটে থেকে পড়া যায় ফাইল , FileWriter এবং FileSystem , API গুলি যদিও তাদের ব্যবহার (এই উত্তর লেজ দেখুন) আদেশ সহকারে হয়।
কিন্তু আপনার প্রশ্নের উত্তর দিতে:
বেকডগুডস ব্যবহার করা *
ফাইল লিখুন:
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){}
});
কাঁচা ফাইল, ফাইল রাইটার এবং ফাইলসিস্টেম এপিআই ব্যবহার করে
ফাইল লিখুন:
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);
ঠিক কি আপনি চেয়েছিলেন? হয়তো, হয়তো না. এপিআইয়ের পরবর্তী দুটি:
অতিরিক্তভাবে, ফাইল-সিস্টেম স্পেক ডিস্কে ডিরেক্টরি স্ট্রাকচারগুলি কীভাবে প্রদর্শিত হবে সে সম্পর্কে কোনও নির্দেশিকা নির্ধারণ করে না। উদাহরণস্বরূপ, ক্রোমিয়াম-ভিত্তিক ব্রাউজারগুলিতে, স্যান্ডবক্সটিতে একটি ভার্চুয়াল ফাইল সিস্টেম রয়েছে (একটি ডিরেক্টরি কাঠামো যা ব্রাউজারের মধ্যে থেকে অ্যাক্সেস করার পরে এটি একই রূপে ডিস্কে উপস্থিত থাকে না) যা দিয়ে ডিরেক্টরিগুলি এবং ফাইলগুলি দিয়ে তৈরি করা হয়েছিল এপিআই স্থাপন করা হয়।
সুতরাং আপনি এপিআই দিয়ে কোনও সিস্টেমে ফাইল লিখতে সক্ষম হতে পারেন, তবে এপিআইগুলি ছাড়াই ফাইলগুলি সনাক্ত করা (ভাল, ফাইল-সিস্টেম এপিআই ছাড়াই) অ-তুচ্ছ ব্যাপার হতে পারে।
যদি আপনি এই সমস্যাগুলি / সীমাবদ্ধতাগুলি মোকাবেলা করতে পারেন তবে এই এপিআইগুলি হ'ল আপনি যা চান তা করার একমাত্র দেশীয় উপায়।
আপনি অ নেটিভ সমাধানের খোলা হন, তাহলে সিলভারলাইট ফাইল মাধ্যমে একটি ট্যাব / উইন্ডো প্রতিযোগিতা থেকে I / O জন্য করতে পারবেন IsolatedStorage । তবে এই সুবিধাটি ব্যবহারের জন্য পরিচালিত কোডের প্রয়োজন; এই জাতীয় কোড লেখার জন্য একটি সমাধান এই প্রশ্নের ক্ষেত্রের বাইরে।
অবশ্যই, একটি সমাধান যা পরিপূরক পরিচালিত কোড ব্যবহার করে, কেবল একটি জাভাস্ক্রিপ্ট লেখার জন্য রেখে দেয়, এই প্রশ্নের ক্ষেত্রের মধ্যে খুব ভাল;):
//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 দেখুন
অন্যদের জন্য, টিডলিউইকি অ্যাপ্লিকেশনটি এটি কীভাবে হয় তা দেখুন।
ব্রাউজারের প্রসঙ্গে জাভাস্ক্রিপ্ট ব্যবহারকারী-নির্দিষ্ট ফাইলটি পড়তে পারে। ফাইল এপিআই ব্যবহার করে ফাইল পড়ার বিষয়ে বিশদ জানতে এরিক বিডেলম্যানের ব্লগটি দেখুন । তবে ব্রাউজার-ভিত্তিক জাভাস্ক্রিপ্টের জন্য কিছু সুরক্ষা সেটিংস অক্ষম না করে স্থানীয় কম্পিউটারের ফাইল সিস্টেম রাইটিং করা সম্ভব নয় কারণ যেকোনও ওয়েবসাইটকে আপনার স্থানীয় ফাইল সিস্টেমকে নির্বিচারে পরিবর্তন করা সুরক্ষার হুমকি হিসাবে বিবেচিত হয়।
এই বলে যে, আপনি যা করার চেষ্টা করছেন তার উপর নির্ভর করে এর চারপাশে কাজ করার কিছু উপায় রয়েছে:
এটি যদি আপনার নিজস্ব সাইট হয় তবে আপনি ওয়েব পৃষ্ঠায় একটি জাভা অ্যাপলেট এম্বেড করতে পারেন। তবে, দর্শকদের স্থানীয় মেশিনে জাভা ইনস্টল করতে হবে এবং সুরক্ষা ঝুঁকি সম্পর্কে সতর্ক করা হবে। দর্শনার্থীকে অ্যাপলেটটি লোড করার অনুমতি দিতে হবে। একটি জাভা অ্যাপলেট একটি এক্সিকিউটেবল সফ্টওয়্যারটির মতো যাতে স্থানীয় কম্পিউটারে সম্পূর্ণ অ্যাক্সেস থাকে।
ক্রোম একটি ফাইল সিস্টেম সমর্থন করে যা স্থানীয় ফাইল সিস্টেমের একটি স্যান্ডবক্সযুক্ত অংশ। বিশদ জন্য এই পৃষ্ঠা দেখুন । এটি আপনার স্থানীয়ভাবে সাময়িকভাবে জিনিসগুলি সংরক্ষণ করার জন্য সরবরাহ করে। তবে এটি অন্যান্য ব্রাউজারগুলির দ্বারা সমর্থিত নয়।
আপনি যদি ব্রাউজারে সীমাবদ্ধ না হন তবে নোড.জেএস এর একটি সম্পূর্ণ ফাইল সিস্টেম ইন্টারফেস রয়েছে। ফাইল সিস্টেমের ডকুমেন্টেশনের জন্য এখানে দেখুন । মনে রাখবেন যে নোড.জেএস কেবল সার্ভারে নয়, উইন্ডো সহ যে কোনও ক্লায়েন্ট কম্পিউটারে চলতে পারে। জাভাস্ক্রিপ্ট পরীক্ষা রানার কর্ম নোড.জেএস এর উপর ভিত্তি করে is আপনি যদি স্থানীয় কম্পিউটারে জাভাস্ক্রিপ্টে প্রোগ্রাম করতে চান তবে এটি একটি বিকল্প।
ফাইল তৈরি করতে চেষ্টা করুন
function makefile(){
var fso;
var thefile;
fso = new ActiveXObject("Scripting.FileSystemObject");
thefile=fso.CreateTextFile("C:\\tmp\\MyFile.txt",true);
thefile.close()
}
সি ড্রাইভে আপনার ডিরেক্টরি তৈরি করুন কারণ উইন্ডোজের ওয়েব থেকে লেখার বিরুদ্ধে সুরক্ষা রয়েছে যেমন সি ড্রাইভে "tmp" নামক ফোল্ডার তৈরি করুন।
আপনাকে ফ্ল্যাশ, জাভা বা সিলভারলাইটে ফিরে যেতে হবে। সিলভারলাইটের ক্ষেত্রে, আপনি বিচ্ছিন্ন স্টোরেজটির দিকে তাকাবেন । এটি আপনাকে ব্যবহারকারীদের ডিস্কে আপনার নিজের খেলার মাঠে ফাইলগুলিতে লিখতে সহায়তা করবে। এটি আপনাকে আপনার খেলার মাঠের বাইরে লিখতে দেবে না।
আপনি কোনও ক্রস-ব্রাউজার উপায়ে এটি করতে পারবেন না। ফাইলগুলি পড়ার / লেখার জন্য অ্যাক্টিভএক্স অবজেক্টগুলি ব্যবহার করতে "বিশ্বস্ত" অ্যাপ্লিকেশনগুলি সক্ষম করার জন্য আইইয়ের পদ্ধতি রয়েছে তবে দুর্ভাগ্যক্রমে এটি।
আপনি যদি ব্যবহারকারীর তথ্য সংরক্ষণ করতে চাইছেন তবে আপনার সম্ভবত কুকি ব্যবহার করা দরকার।
একটি রিঅ্যাক্টজেএস পরীক্ষা থেকে, নিম্নলিখিত কোডটি সফলভাবে একটি ফাইল লিখে:
import writeJsonFile from 'write-json-file';
const ans = 42;
writeJsonFile('answer.txt', ans);
const json = {"answer": ans};
writeJsonFile('answer_json.txt', json);
ফাইলটি পরীক্ষাগুলি সম্বলিত ডিরেক্টরিতে লেখা হয়, সুতরাং একটি আসল জেএসওএন ফাইল '* .json' এ লেখা একটি লুপ তৈরি করে!
সুরক্ষা ঝুঁকি হিসাবে জাভাস্ক্রিপ্ট ব্যবহার করে আপনি ক্লায়েন্টের পক্ষ থেকে ফাইল i / o করতে পারবেন না। আপনি তাদের এগুলিকে ডাউনলোড করতে এবং একটি এক্সী চালাতে হবে, অথবা ফাইলটি যদি আপনার সার্ভারে থাকে তবে সার্ভারের পাশে i / o করতে এজেএক্স এবং একটি সার্ভার-সাইড ভাষা যেমন পিএইচপি ব্যবহার করুন '
জাভাস্ক্রিপ্ট ব্যবহার করে একটি ফাইল পড়ার এবং লেখার দুটি উপায় রয়েছে
জাভাস্ক্রিপ্ট এক্সটেনশন ব্যবহার করে
একটি ওয়েব পৃষ্ঠা এবং অ্যাক্টিভ এক্স অবজেক্ট ব্যবহার করা
ক্রোম ভি 5 2 + এর জন্য লেখার সমাধানটি এখানে দেওয়া হয়েছে (ব্যবহারকারীকে এখনও একটি গন্তব্য ডু নির্বাচন করতে হবে ...)
উত্স: স্ট্রিম্যাসভার.জেএস
<!-- 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()
ক্লায়েন্ট পক্ষ থেকে উত্পন্ন বড় ডেটা লেখার জন্য সবচেয়ে উপযুক্ত।
অন্যথায় আমি ব্লব / ফাইলগুলি সংরক্ষণ করতে ফাইলসভার.জেএস ব্যবহার করার পরামর্শ দিই