【发布时间】:2012-11-30 04:17:30
【问题描述】:
我先声明我知道 Java 不是 JavaScript,反之亦然。
我有一个项目,我需要计算 1750 个文档名称和文档内容中每个单词的出现次数。我从一位同事那里得到了一些很棒的 JavaScript,它完全可以从网页上的表单输入中完成我想要的。
我想使用Java的FileReader、BufferedReader、walkFileTree等来遍历文档所在的目录。
我不确定这是否是最有效或最有效的方法,但代码的 Java 和 JavaScript 部分现在都彼此独立工作,我想看看我是否能让它们通过在我开始重新发明轮子之前,他们之间的数据。
这是我到目前为止的位置。我被困在 CLParse 方法中并插入了伪代码:
public static void main(String... aArgs) throws FileNotFoundException {
File startingDirectory= new File("CGT");
List<File> files = FileListing.getFileListingNoSort(startingDirectory);
for(File file : files ) {
CLParse(file.toString());
} }
static private List<File> getFileListingNoSort(File aDirectory) throws FileNotFoundException {
List<File> result = new ArrayList<File>();
File[] filesAndDirs = aDirectory.listFiles();
List<File> filesDirs = Arrays.asList(filesAndDirs);
for(File file : filesDirs) {
result.add(file); //always add, even if directory
if ( ! file.isFile() ) {
List<File> deeperList = getFileListingNoSort(file);
result.addAll(deeperList);
} }
return result;
}
/* is something like this doable and how would I do it?
*/
public static void CLParse(String fn) {
pass fn to JavaScript counter
return an array of {word,occurences} for the string
write array to file
}
我将创建另一组方法来提取文档内容并将其作为字符串传递。我很想知道是否有人有任何在 Java 和 JavaScript 之间来回传递值的实际经验,以及关于如何更好/更好的方法的建议。
【问题讨论】:
-
您可以使用 Java 脚本框架从 Java 调用 JavaScript,但在这种情况下,将您同事的代码转换为 Java 可能是最简单的。不会很长吧?
-
Java 有一个“脚本引擎”,用于评估例如来自 Java 的 JavaScript。见docs.oracle.com/javase/6/docs/technotes/guides/scripting/…。这是你需要的吗?
-
如果你的 JavaScript 代码是基于文档的 DOM 结构的,并且你真的非常想重用它,那么你可以编写一个浏览器插件(例如 Chrome),让 Java 代码启动浏览器实例在正确的页面上,并让插件通过 AJAX 将数据发送回 Java 代码。我会重写 JavaScript 代码...
-
现有代码约250行。我从来没有真正将 JavaScript 逆向工程成别的东西。我很担心在翻译中搞砸了一些东西。我将研究 Java Scripting 框架,看看哪个看起来更吓人。 :)
-
您需要 Java 代码中的结果吗?因为更好的选择可能是直接在命令行上运行 JavaScript。
标签: javascript java integration