如何在nodejs的目录中获取带有.txt扩展名的第一个文件?

时间:2013-07-08 01:55:50

标签: javascript node.js

我所有文件所在的目录是:'/ usr / home / jordan',我有很多文件(在目录本身,但是一个以.txt扩展名命名的文件。

使用nodejs和fs,我想将带有txt扩展名的第一个文件(或任何文件)放入“mytxtfilepath”。我在整个目录中只有一个.txt文件(在许多其他文件中但扩展名不同)单个.txt文件可以命名为ANYTHING,我不能保证在任何给定时间名称将是什么,只是它以.TXT:

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

如何在不对txt文件本身名称进行硬编码的情况下,将正确的路径放到txt文件中?

5 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:1)

您也可以使用Glob Module。它适用于我!

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

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

答案 2 :(得分:0)

您可以使用fs.readdir列出文件,找到以.txt结尾的文件:

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;
      }
    }
  }
);

请注意,这需要path,因此请在顶部添加var path = require("path")

答案 3 :(得分:0)

您可以使用fs.readdirpath.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);
});

答案 4 :(得分:0)

懒惰的解决方案:

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

然后

"Geolocation": {
  "Type": "AWS::Route53::RecordSet",
  "Properties": {
    "HostedZoneName": {
      "Ref": "Route53Domain"
    },
    "Name": {
      "Fn::Join": [
        "$",
        [
          {
            "Ref": "javadns"
          },
          {
            "Ref": "Route53Domain"
          }
        ]
      ]
    },
    "Type": "CNAME",
    "TTL": "60",
    "GeoLocation": {"CountryCode" : "*"},  
    "ResourceRecords": [
      { "Fn::Join" : [".", ["geoip", { "Ref" : "javadns" }]]}
    ]
  }
},