英特尔XDK目录浏览

我试图得到一个方法来达到并parsing目录中的所有JSON文件,女巫在一个英特尔Xdk项目。 我的案例中的所有文件都存储在项目的“/ cards”文件夹中。 我试图用fs.readdirSync('/ cards')方法达到主题,但是这并没有指向我所期望的位置,而且我还没有运用“intel.xdk.webRoot”path。

与模拟器我设法得到文件,一个窍门:

fs.readdirSync(intel.xdk.webRoot.replace('localhost:53862/http-services/emulator-webserver/ripple/userapp/', '')+'cards');

(intel.xdk.webRoot包含我的'/ cards'文件夹的绝对path)

它的工作就像一个魅力,但它不是在我想要build立它的任何真正的设备上工作。 我已经尝试了与iOS7和Android 4.2手机。

请帮助我使用fs.readdirSync()方法,或给我一些替代解决scheme。

感谢致敬,

讽刺

您不能在移动应用上使用nodejs api。 这是XDK模拟器让你做的一个错误。 这个错误在XDK的下一个版本中得到解决。

您可以编写一个节点程序来扫描目录,然后用目录的内容写出一个js文件。 在将应用程序打包到构build选项卡之前,您可以在笔记本电脑上运行节点脚本。 输出将如下所示:files.js:

dir = {files:['file1.txt','file2.txt']}

然后使用脚本标签来加载它:

而你的js可以读取dirvariables。 这假定在应用程序运行时内容不会改变。

应用程序根目录的位置将根据目标平台而有所不同,也可能因模拟器和debugging容器(例如App Preview与App Analyzer)而异。 以下是我在项目中查找文件所做的工作:

 // getWebPath() returns the location of index.html // getWebRoot() returns URI pointing to index.html function getWebPath() { "use strict" ; var path = window.location.pathname ; path = path.substring( 0, path.lastIndexOf('/') ) ; return 'file://' + path ; } function getWebRoot() { "use strict" ; var path = window.location.href ; path = path.substring( 0, path.lastIndexOf('/') ) ; return path ; } 

我还没有能够详尽地testing这个,但似乎到目前为止工作。 下面是一个例子,我使用Cordova媒体对象,并希望它播放本地存储在项目中的文件。 请注意,我必须“特例”的iOS容器:

 var x = window.device && window.device.platform ; console.log("platform = ", x) ; if(x.match(/(ios)|(iphone)|(ipod)|(ipad)/ig)) { var media = new Media("audio/bark.wav", mediaSuccess, mediaError, mediaStatus) ; } else { var media = new Media(getWebRoot() + "/audio/bark.wav", mediaSuccess, mediaError, mediaStatus) ; } console.log("media.src = ", media.src) ; media.play() ; 

不太确定,如果这是你正在寻找…

您将需要使用英特尔XDK中的Cordova构build,这里是关于使用Cordova构build的信息:

 https://software.intel.com/en-us/html5/articles/using-the-cordova-for-android-ios-etc-build-option 

和一个DirectoryReader的例子:

 function success(entries) { var i; for (i=0; i<entries.length; i++) { console.log(entries[i].name); } } function fail(error) { alert("Failed to list directory contents: " + error.code); } // Get a directory reader var directoryReader = dirEntry.createReader(); // Get a list of all the entries in the directory directoryReader.readEntries(success,fail);