我想知道是否可以使用javascript打开文本文件(位置类似于:http://mysite.com/directory/file.txt)并检查文件是否包含给定的字符串/变量。
在php中,这可以通过以下方式轻松完成:
$file = file_get_contents("filename.ext");
if (!strpos($file, "search string")) {
echo "String not found!";
} else {
echo "String found!";
}
有没有,最好是简单的方法吗? (我正在运行"函数"在nodejs上的.js文件中,appfog,如果可能的话)。
答案 0 :(得分:18)
您无法使用javascript打开客户端文件。
虽然在服务器端可以使用node.js。
fs.readFile(FILE_LOCATION, function (err, data) {
if (err) throw err;
if(data.indexOf('search string') >= 0){
console.log(data)
}
});
较新版本的node.js(> = 6.0.0)具有includes
函数,该函数会搜索字符串中的匹配项。
fs.readFile(FILE_LOCATION, function (err, data) {
if (err) throw err;
if(data.includes('search string')){
console.log(data)
}
});
答案 1 :(得分:7)
您也可以考虑使用流,因为它可以处理更大的文件。
var fs = require('fs');
var stream = fs.createReadStream(path);
var found = false;
stream.on('data',function(d){
if(!found) found=!!(''+d).match(content)
});
stream.on('error',function(err){
then(err, found);
});
stream.on('close',function(err){
then(err, found);
});
将发生错误或关闭,然后它将关闭流,因为autoClose为true,默认值为vallue。
答案 2 :(得分:0)
有没有,最好是简单的方法呢?
是
require("fs").readFile("filename.ext", function(err, cont) {
if (err)
throw err;
console.log("String"+(cont.indexOf("search string")>-1 ? " " : " not ")+"found");
});
答案 3 :(得分:0)
OOP方式:
var JFile=require('jfile');
var txtFile=new JFile(PATH);
var result=txtFile.grep("word") ;
//txtFile.grep("word",true) -> Add 2nd argument "true" to ge index of lines which contains "word"/
npm install jfile
((JFile)=>{
var result= new JFile(PATH).grep("word");
})(require('jfile'))
答案 4 :(得分:0)
从客户端来说,你绝对可以做到这一点:
var xhttp = new XMLHttpRequest(), searchString = "foobar";
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
console.log(xhttp.responseText.indexOf(searchString) > -1 ? "has string" : "does not have string")
}
};
xhttp.open("GET", "http://somedomain.io/test.txt", true);
xhttp.send();
如果你想在服务器端使用node.js这样做,请使用File System包:
var fs = require("fs"), searchString = "somestring";
fs.readFile("somefile.txt", function(err, content) {
if (err) throw err;
console.log(content.indexOf(searchString)>-1 ? "has string" : "does not have string")
});