அத்தியாயம் 24

கோப்பு முறைமை (File system)

ஜாவாஸ்கிரிப்டில் கோப்பு முறைமைச் செயல்பாடுகள் (Filesystem operations) வலை உலாவியாக (கிளையன்ட் பக்க ஜாவாஸ்கிரிப்ட்) அல்லது சேவையகமாக (Node.js) இருக்கக்கூடிய ஹோஸ்ட் சூழலின் (host environment) கோப்பு முறைமையுடன் தொடர்புகொள்ளப் பயன்படுத்தப்படுகின்றன. கோப்பு முறைமையிலிருந்து படிக்கவும் (read) கோப்பு முறைமைக்கு எழுதவும் (write) பல்வேறு APIகள் மற்றும் முறைகளை ஜாவாஸ்கிரிப்ட் வழங்குகிறது. தரவைச் சேமிப்பது, கட்டமைப்பு கோப்புகளைப் (configuration files) படிப்பது மற்றும் பயனரால் பதிவேற்றப்பட்ட கோப்புகளைச் செயலாக்குவது போன்ற பணிகளுக்கு இந்தச் செயல்பாடுகள் அவசியம். ஜாவாஸ்கிரிப்டில் உள்ள கோப்பு முறைமைச் செயல்பாடுகளின் கண்ணோட்டம் (overview) கீழே கொடுக்கப்பட்டுள்ளது:

ஒத்திசைவற்ற மற்றும் தடையற்ற I/O (Asynchronous and Non-Blocking I/O):

Node.js இல், I/O செயல்பாடுகளை ஒத்திசைவின்றிச் (asynchronously) செய்ய முடியும், அதாவது அவை நிரலைச் செயல்படுத்துவதைத் தடுக்காது (don't block). அதற்குப் பதிலாக, அவை ஒரு வரிசையில் (queue) வைக்கப்படுகின்றன, மேலும் நிரல் தொடர்ந்து மற்ற பணிகளைச் செயல்படுத்துகிறது. I/O செயல்பாடு முடிந்ததும், முடிவைக் கையாள கால்பேக் செயல்பாடு (callback function) அழைக்கப்படுகிறது. அதிக நேரம் எடுக்கக்கூடிய I/O செயல்பாடுகளுக்கு இது மிகவும் பயனுள்ளதாக இருக்கும்.

படித்தல் (Read):

இந்த எடுத்துக்காட்டில், நீங்கள் test.txt கோப்பிலிருந்து தரவை ஒத்திசைவின்றிப் படிக்க fs.readFile செயல்பாட்டைப் பயன்படுத்துகிறீர்கள். படிக்கும் செயல்பாடு முடிந்ததும் செயல்படுத்தப்படும் கால்பேக் செயல்பாட்டை இது எடுக்கிறது. console.log("This gets printed at First") வரியானது படிக்கும் செயல்பாட்டைத் தொடங்கிய உடனேயே செயல்படுத்தப்படுகிறது, மேலும் இது வாசிப்பு முடிவடையும் வரை காத்திருக்காது.

const fs= require('fs');
//asynchronous, non-blocking I/O that's why this runs last, as it takes more time

fs.readFile('test.txt','utf8',(err,data) => {
    console.log(err,data)
})
console.log("This gets printed at First")

எழுதுதல் (Write):

இங்கே, ஒத்திசைவின்றி (asynchronously) 'test.txt' கோப்பில் தரவை எழுத fs.writeFile ஐப் பயன்படுத்துகிறீர்கள். எழுதும் செயல்பாடு முடிந்ததும் கால்பேக் செயல்பாடு செயல்படுத்தப்படுகிறது. எழுதும் செயல்பாடு முடிந்ததும் இது "This runs after writing in a file: written to file" என்பதை அச்சிடுகிறது.

fs.writeFile("test.txt","mahima is good girl", () => {
    console.log("This runs after writing in a file: written to file")
})

ஒத்திசைவான I/O (Synchronous I/O):

செயல்பாடு முடியும் வரை ஒத்திசைவான I/O செயல்பாடுகள் நிரலை இயக்குவதைத் தடுக்கின்றன (block). Node.js இல், ஒத்திசைவான செயல்பாடுகள் குறைவாகவே பயன்படுத்தப்பட வேண்டும், குறிப்பாகக் கோப்பு I/Oக்கு, அவை செயல்திறன் சிக்கல்களுக்கு வழிவகுக்கும் மற்றும் நிகழ்வு சுழற்சியைத் (event loop) தடுக்கும்.

படித்தல் (Read):

ஒத்திசைவான கோப்பு வாசிப்புக்கு fs.readFileSync செயல்பாடு பயன்படுத்தப்படுகிறது. முழு கோப்பையும் படிக்கும் வரை இது செயல்படுத்துவதைத் தடுக்கிறது, பின்னர் அது குறியீட்டின் மற்ற பகுதிகளுடன் தொடர்கிறது. கோப்பு வாசிப்பின் போது நிரல் பதிலளிக்காத நிலைக்கு (unresponsive) இது காரணமாக இருக்கலாம் என்பதால் இது பொதுவாகப் பரிந்துரைக்கப்படுவதில்லை.

const a=fs.readFileSync("test.txt") //nodejs intentionally blocks
console.log(a.toString())
console.log("At last")

எழுதுதல் (Write):

ஒத்திசைவான கோப்பு எழுத்திற்கு fs.writeFileSync பயன்படுத்தப்படுகிறது. எழுதும் செயல்பாடு முடியும் வரை நிரலின் செயல்பாட்டை இது தடுக்கிறது. எழுதும் செயல்பாட்டின் போது நீண்ட காலத்திற்கு நிரலைத் தடுக்கலாம் என்பதால், மீண்டும் இது எச்சரிக்கையுடன் பயன்படுத்தப்பட வேண்டும்.

fs.writeFileSync("test.txt","mahima is good girl", 'utf8')  
console.log("This is sync: the process is intentionally blocked ")

Node.js ஒத்திசைவான மற்றும் ஒத்திசைவற்ற கோப்பு I/O விருப்பங்களை வழங்குகிறது. ஒத்திசைவற்ற I/O பொதுவாகச் சிறந்த செயல்திறன் மற்றும் பதிலளிப்புத்தன்மைக்கு (responsiveness) விரும்பப்படுகிறது, அதே நேரத்தில் ஒத்திசைவான I/O தேவைப்படும்போது மற்றும் எச்சரிக்கையுடன் மட்டுமே பயன்படுத்தப்படுகிறது, ஏனெனில் இது நிரலை இயக்குவதைத் தடுக்கலாம்.

results matching ""

    No results matching ""