2013-07-08 21 views
5

Tüm dosyalarım şunlardır: '/ usr/home/jordan' ve altında bir çok dosya var (dizinde, ancak .txt uzantılı bir dosya.Nodejs ile bir dizinde .txt uzantılı ilk dosya nasıl alınır?

nodejs ile ve fs, ilk dosya (veya herhangi bir dosya) bir txt uzantılı "mytxtfilepath" içine koymak istiyorum.Tüm dizinde sadece bir .txt dosyası var (diğer birçok dosya arasında ama farklı uzantıları ile) Tek .txt Ben adını hardcoding olmadan benim txt dosyası için doğru yolu koymak nasıl

var homedir = "/usr/home/jordan"; 
var mytxtfilepath=homedir + "???????"; 
fs.readfile(mytxtfilepath, function(err,data) { 
    console.log(data); 
}); 

: dosya HİÇBİRŞEY adlandırılabilir, bunu .txt biter sadece bu değil, herhangi bir zamanda adı ne olacağını garanti edemez txt dosyası öz?

cevap

9
var files = fs.readdirSync(homedir); 
var path = require('path'); 

for(var i in files) { 
    if(path.extname(files[i]) === ".txt") { 
     //do something 
    } 
} 
+0

Ben dizinde birden fazla dosya var, ama sadece bir .txt dosyası. – Rolando

+0

Düzenlenmiş yanıtı gözden geçirin – everconfusedGuy

+0

files.filter (/./. Test, /\.txt$/i)[0] daha hızlı ve daha kolay ... – dandavis

0

Dosyaları listelemek için fs.readdir kullanabilir ve .txt ile biter birini bulabilirsiniz: Bu yüzden üstündeki var path = require("path") eklemek path gerektirir

var myPath = "/usr/home/jordan"; 
fs.readdir(path, function(fileNames) { 
    for(var i = 0; i < fileNames.length; i++) { 
     var fileName = fileNames[i]; 
     if(path.extname(fileName) === ".txt") { 
     fs.readfile(path.join(myPath,fileName), function(err,data) { 
      console.log(data); 
     }); 
     break; 
     } 
    } 
    } 
); 

Not.

0

Sen de Glob Module kullanabilirsiniz fs.readdir ve path.extname

var fs = require('fs') 
    , path = require('path'); 

function getFileWithExtensionName(dir, ext) { 
    fs.readdir(dir, function(files){ 
    for (var i = 0; i < files.length; i++) { 
     if (path.extname(files[i]) === '.' + ext) 
     return files[i] 
    } 
    }); 
} 

var homedir = "/usr/home/jordan"; 
var mytxtfilepath= getFileWithExtensionName(homedir, 'txt') 
fs.readfile(mytxtfilepath, function(err,data) { 
    console.log(data); 
}); 
+0

Ben bu yöntem kullanarak 'TypeError: yol bir dize olmalı '(yukarıdaki" readfile "yerine readFile işlevini kullanmak için ayarladıktan sonra) –

1

kullanabilirsiniz. Benim için iyi çalışıyor!

var glob = require('glob'); 
var myPath= "/fileFolder/**/*.txt"; 

glob(myPath, function (er, files) { 
    // Files is an array of filenames. 
    // Do something with files. 
}) 
0

tembel çözüm:

npm install --save readdir 

ve sonra

const {read} = require('readdir'); 
read("/usr/home/jordan", "**/*.txt", (err, paths) => 
    console.log(paths) 
); 
İlgili konular