You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
4GB büyüklüğündeki dosyada en çok geçen 10 kelimeyi bul. Bu adımda kelimenin karakter sayısı 4'ten büyük çok sık kullanılan bağlaçları kolayca filtrelemiş olur.
constfs=require('fs');constworldListJson=require('./wordList');constfilePath='new-file.txt';// Çıktı dosyasıconsttotalFileSizeInBytes=4*1024*1024*1024;// 4 GBconststartTime=newDate();constwriteStream=fs.createWriteStream(filePath,{flags: 'a'});console.log('\n-> İşlem başladı...');start();// Dosya yoksa oluşmasını bekle// var olun dosyanın boyutunu oku ve var olan dosyanın kalan satırlarını tamamlaasyncfunctionstart(){awaitcontrolFile()fs.stat(filePath,(err,stats)=>{if(err){console.error(`Hata: ${err}`);return;}constfileSizeInBytes=stats.size;functionwriteData(){constrandomValue=getRandomValue(worldListJson.length)constwordJson=worldListJson[randomValue]constwordText=wordJson.word+" : "+wordJson.meanings.toString()+"\n";writeStream.write(wordText,(err)=>{if(err){console.error('Dosya yazma hatası:',err);return;}if(writeStream.bytesWritten<totalFileSizeInBytes-fileSizeInBytes){// Toplam dosya boyutunu aşmadıysa bir sonraki veri bloğunu yazwriteData();}else{// Dosya yazma işlemi tamamlandıwriteStream.end(()=>{console.log(`-> Veri ${filePath} dosyasına yazıldı.`);constendTime=newDate();constelapsedTime=endTime-startTime;console.log(`\n-> Yazma işlem süresi: ${Math.floor(elapsedTime/1000/60/60)} saat ${Math.floor(elapsedTime/1000/60)} dakika ${(Math.floor(elapsedTime/1000)%60)} saniye. Toplam Milisaniye: ${elapsedTime}`);console.log("\n------------------------------\n");readText(elapsedTime);});}});}writeData();})}functionreadText(){constreadline=require('readline');constwordMap=newMap();// Kelimelerin sayısını tutmak için bir harita (Map)constrl=readline.createInterface({input: fs.createReadStream(filePath),output: process.stdout,terminal: false});rl.on('line',(line)=>{// Satırdaki kelimeleri ayırır.constwords=line.split(/\s+/);// Her kelimenin sayısını haritada bulur sayısını artırır.words.forEach((word)=>{// Kelimenin karakter sayısı 4'ten büyükse kelimeyi ayrıştırır.if(word.length>4){// kelimenin sağındaki ve solundaki değerleri dikkate almazconstcleanedWord=word.toLowerCase().replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,'');if(wordMap.has(cleanedWord)){wordMap.set(cleanedWord,wordMap.get(cleanedWord)+1);}else{wordMap.set(cleanedWord,1);}}});});rl.on('close',()=>{// Kelimeyi çoktan aza sıralarconstsortedWords=[...wordMap.entries()].sort((a,b)=>b[1]-a[1]);// En çok geçen 10 kelimeconsttop10Words=sortedWords.slice(0,10);console.log('En çok geçen 10 kelime:\n');top10Words.forEach((word,index)=>{console.log(`${index+1}. ${word[0]}: ${word[1]} kez`);});constendTime=newDate();constelapsedTime=endTime-startTime;console.log(`\n-> OkumaYazma işlem süresi: ${Math.floor(elapsedTime/1000/60/60)} saat ${Math.floor(elapsedTime/1000/60)} dakika ${(Math.floor(elapsedTime/1000)%60)} saniye. Toplam Milisaniye: ${elapsedTime}`);});}console.log("\n------------------------------\n");functiongetRandomValue(max){returnMath.floor(Math.random()*(max-1));}// Rastgele değer oluştur.functioncontrolFile(){if(!fs.existsSync(filePath)){console.log(`\n-> ${filePath} dosyası oluşturuldu.`);}else{console.log(`\n-> ${filePath} dosyası mevcut.`);}}