3

有没有一种可能的方法来读取 JavaScript 中的本地文件。

我的文件夹:

     db.csv

     Parse.js

试图在 Parse.js 中获取文件 db.csv 的内容,但徒劳无功。

你能分享一些链接,我可以获得足够的知识如何阅读文件。在 Xcode5 中运行 Instruments,在 .js 文件中使用测试脚本,我必须从 .csv 文件中输入一些值。

4

3 回答 3

3

iOS UIAutomation,苹果提供了一个用于在目标主机上运行任务的api。

performTaskWithPathArgumentsTimeout

使用它,我们可以有一个 bash 脚本来打印我们想要在第一种情况下获取的文件的内容。

Bash 脚本可以像这样简单地满足这个要求。

 #! /bin/bash
FILE_NAME="$1"
cat $FILE_NAME

将其另存为例如 FileReader.sh 文件。

在您的自动化脚本中,

    var target = UIATarget.localTarget();
    var host = target.host();
    var result = host.performTaskWithPathArgumentsTimeout(executablePath,[filePath,fileName], 15);
UIALogger.logDebug("exitCode: " + result.exitCode);
    UIALogger.logDebug("stdout: " + result.stdout);
    UIALogger.logDebug("stderr: " + result.stderr);

其中,executablePath 是需要执行命令的位置。

var executablePath = "/bin/sh";

filePath 是创建的 FileReader.sh 文件的位置。执行时,将内容输出到标准输出(在我们的要求中)。[给出文件的完整绝对路径]

fileName 是要从中获取内容的实际文件。[给出文件的完整绝对路径] 就我而言,我有一个 Contents.csv 文件,我必须阅读它。

最后一个参数是以秒为单位的超时。

希望这对其他人有所帮助,尝试获取内容(读取文件)以执行 iOS UIAutomation。

参考:

https://stackoverflow.com/a/19016573/344798

https://developer.apple.com/library/iOS/documentation/UIAutomation/Reference/UIAHostClassReference/UIAHost/UIAHost.html

于 2013-12-17T05:20:15.327 回答
1

如果该文件与您所在的站点位于同一个域中,您将使用 Ajax 加载它。如果您使用的是 Ajax,则类似于

$.get('db.csv', function(csvContent){
    //process here
});

请注意,csv 文件的路径将与您所在的网页相关,而不是 JavaScript 文件。

如果您不使用 jQuery,则必须手动使用 XmlHttpRequest 对象来执行 Ajax 调用。

尽管您的问题(似乎)没有处理它,但如果文件位于不同的域中,那么您必须使用 jsonP 或 CORS。

而且,以防这是您的目标,不,您不能,在客户端JavaScript 打开某种 Stream 并读取文件。那将是一个巨大的安全漏洞。

于 2013-11-15T06:45:08.167 回答
0

这是Illuminator的宿主函数库中一个相当简单的函数:

function readFromFile(path) {
    var result = target.host().performTaskWithPathArgumentsTimeout("/bin/cat", [path], 10);

    // be verbose if something didn't go well
    if (0 != result.exitCode) {
        throw new Error("readFromFile failed: " + result.stderr);
    }
    return result.stdout;
}

如果您使用的是 Illuminator,这是host().readFromFile(path).

于 2015-04-01T21:29:49.953 回答